﻿Imports Commander_Wars.Spieletools
Public Enum Baulisten
    ''' <summary>
    ''' Die Commander Wars 1 Bauliste
    ''' </summary>
    ''' <remarks></remarks>
    AW
    ''' <summary>
    ''' Die Bauliste aus Advance Wars DC
    ''' </summary>
    ''' <remarks></remarks>
    AW2
    ''' <summary>
    ''' Die Bauliste aus Commander Wars Dual Strike
    ''' </summary>
    ''' <remarks></remarks>
    AWDS
    ''' <summary>
    ''' Bauliste aus Commander Wars der wahre Feind
    ''' </summary>
    ''' <remarks></remarks>
    CoW
    ''' <summary>
    ''' Bauliste aus Commander Wars der wahre Feind
    ''' </summary>
    ''' <remarks></remarks>
    CoWEmpty
    ''' <summary>
    ''' Leere Bauliste
    ''' </summary>
    ''' <remarks></remarks>
    None
    ''' <summary>
    ''' Nur Bodentruppen
    ''' </summary>
    ''' <remarks></remarks>
    Groundforce
    ''' <summary>
    ''' Nur Lufttruppen
    ''' </summary>
    ''' <remarks></remarks>
    Airforce
    ''' <summary>
    ''' Nur Seetruppen 
    ''' </summary>
    ''' <remarks></remarks>
    Seaforce
    ''' <summary>
    ''' Die Truppen aus Advance Wars Dual Strike
    ''' </summary>
    ''' <remarks></remarks>
    AWDC
    ''' <summary>
    ''' Die Commander Wars 2 BauListe
    ''' </summary>
    ''' <remarks></remarks>
    CoW2
    ''' <summary>
    ''' Eine vom Spieler erstellte Bauliste
    ''' </summary>
    ''' <remarks></remarks>
    Custom1
    ''' <summary>
    ''' Eine vom Spieler erstellte Bauliste
    ''' </summary>
    ''' <remarks></remarks>
    Custom2
    ''' <summary>
    ''' Eine vom Spieler erstellte Bauliste
    ''' </summary>
    ''' <remarks></remarks>
    Custom3
End Enum
''' <summary>
''' Stellt alle Funktionen zum Laden von Objekten zur Verfügung
''' </summary>
''' <remarks></remarks>
Public Class ObjektLadeklasse
    Const AnimationsWarteFrames As Integer = 2
#Region "Einheiten"
    'Hinweis bei einer neuen Einheit müssen auch die Texturen im ObjektSpieler geladen werden
    ''' <summary>
    ''' Lädt eine Einheit mit Startwerten
    ''' </summary>
    ''' <param name="Spieler"></param>
    ''' <param name="X"></param>
    ''' <param name="Y"></param>
    ''' <param name="EinheitenID"></param>
    ''' <param name="HatSichBewegt"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Shared Function NewEinheit(ByVal EinheitenID As String, ByVal Spieler As Integer, ByVal X As Integer, ByVal Y As Integer, ByVal Leben As Integer, Optional ByVal HatSichBewegt As Boolean = True) As ObjektEinheit
        If My.Settings.CommanderWarsGameMoodus = CommanderWarsGameModi.FireEmblem Then
            Return Fire_Emblem_MOD.NewEinheit(EinheitenID, Spieler, X, Y, Leben, HatSichBewegt)
        Else
            Select Case EinheitenID.ToUpper
                Case "ABPZ"
                    Return New EinheitAmphibienpanzer(Leben, Spieler, X, Y, HatSichBewegt)
                Case "ART"
                    Return New EinheitArtillerie(Leben, Spieler, X, Y, HatSichBewegt)
                Case "AUFKLÄRER"
                    Return New EinheitAufklärer(Leben, Spieler, X, Y, HatSichBewegt)
                Case "BOMBER"
                    Return New EinheitBomber(Leben, Spieler, X, Y, HatSichBewegt)
                Case "FLAK"
                    Return New EinheitFlak(Leben, Spieler, X, Y, HatSichBewegt)
                Case "FLTR"
                    Return New EinheitFlugzeugträger(Leben, Spieler, X, Y, HatSichBewegt)
                Case MovementSorts.Höllium.ToString.ToUpper
                    Return New EinheitHöllium(Leben, Spieler, X, Y, HatSichBewegt)
                Case "HOVERCRAFT"
                    Return New EinheitHovercraft(Leben, Spieler, X, Y, HatSichBewegt)
                Case "INF"
                    Return New EinheitInfanterie(Leben, Spieler, X, Y, HatSichBewegt)
                Case "JGPZ"
                    Return New EinheitJagdpanzer(Leben, Spieler, X, Y, HatSichBewegt)
                Case "JÄGER"
                    Return New EinheitJäger(Leben, Spieler, X, Y, HatSichBewegt)
                Case "K-HELI"
                    Return New K_Heli(Leben, Spieler, X, Y, HatSichBewegt)
                Case "KPZ"
                    Return New EinheitKampfpanzer(Leben, Spieler, X, Y, HatSichBewegt)
                Case "KREUZER"
                    Return New EinheitKreuzer(Leben, Spieler, X, Y, HatSichBewegt)
                Case "L-BOOT"
                    Return New EinheitL_Boot(Leben, Spieler, X, Y, HatSichBewegt)
                Case "LÄUFER"
                    Return New EinheitLäufer(Leben, Spieler, X, Y, HatSichBewegt)
                Case MovementSorts.Mech.ToString.ToUpper
                    Return New EinheitMech(Leben, Spieler, X, Y, HatSichBewegt)
                Case "MEGAPZ"
                    Return New EinheitMegapanzer(Leben, Spieler, X, Y, HatSichBewegt)
                Case "MISSILE"
                    Return New EinheitMissile(Leben, Spieler, X, Y, HatSichBewegt)
                Case "RKW"
                    Return New EinheitRaketenwerfer(Leben, Spieler, X, Y, HatSichBewegt)
                Case "SSIEINHEIT"
                    Return New EinheitScharfschütze(Leben, Spieler, X, Y, HatSichBewegt)
                Case "SCHLFF"
                    Return New EinheitSchlachtschiff(Leben, Spieler, X, Y, HatSichBewegt)
                Case "S-BOMBE"
                    Return New Schwarze_Bombe(Leben, Spieler, X, Y, HatSichBewegt)
                Case "S-BOOT"
                    Return New Schwarze_Boot(Leben, Spieler, X, Y, HatSichBewegt)
                Case "SPÄHER"
                    Return New EinheitSpäher(Leben, Spieler, X, Y, HatSichBewegt)
                Case "TARNK"
                    Return New EinheitTarnkappenbomber(Leben, Spieler, X, Y, HatSichBewegt)
                Case "TITANPZ"
                    Return New EinheitTitanpanzer(Leben, Spieler, X, Y, HatSichBewegt)
                Case "T-FLUGZEUG"
                    Return New EinheitTransportflugzeug(Leben, Spieler, X, Y, HatSichBewegt)
                Case "T-HELI"
                    Return New EinheitTransporthelikopter(Leben, Spieler, X, Y, HatSichBewegt)
                Case "TTL"
                    Return New EinheitTTL(Leben, Spieler, X, Y, HatSichBewegt)
                Case "TTP"
                    Return New EinheitTTP(Leben, Spieler, X, Y, HatSichBewegt)
                Case "U-BOOT"
                    Return New U_Boot(Leben, Spieler, X, Y, HatSichBewegt)
                Case "ZEPPELIN"
                    Return New EinheitZeppelin(Leben, Spieler, X, Y, HatSichBewegt)
                Case "ZERSTÖRER"
                    Return New EinheitZerstörer(Leben, Spieler, X, Y, HatSichBewegt)
                Case "DREADNAUGHT"
                    Return New EinheitDreadnaught(Leben, Spieler, X, Y, HatSichBewegt)
                Case "TRITON"
                    Return New EinheitTriton(Leben, Spieler, X, Y, HatSichBewegt)
                Case "V3RAKETENWERFER"
                    Return New EinheitV3_Raketenwerfer(Leben, Spieler, X, Y, HatSichBewegt)
                Case "VERSORGUNGSSCHIFF"
                    Return New EinheitVersorgungsschiff(Leben, Spieler, X, Y, HatSichBewegt)
                Case "BAUPANZER"
                    Return New EinheitBaupanzer(Leben, Spieler, X, Y, HatSichBewegt)
                Case "HOVERFLAK"
                    Return New EinheitHoverflak(Leben, Spieler, X, Y, HatSichBewegt)
                Case "SCHWERESHOVERCRAFT"
                    Return New EinheitSchweres_Hovercraft(Leben, Spieler, X, Y, HatSichBewegt)
                Case "MOTORRAD"
                    Return New EinheitMotorrad(Leben, Spieler, X, Y, HatSichBewegt)
                Case "FLARE"
                    Return New EinheitFlare(Leben, Spieler, X, Y, HatSichBewegt)
                Case "PANZERABWEHRKANONE"
                    Return New EinheitPanzerAbwehrkanone(Leben, Spieler, X, Y, HatSichBewegt)
                Case "WASSERFLUGZEUG"
                    Return New EinheitWasserflugzeug(Leben, Spieler, X, Y, HatSichBewegt)
                Case "KANONENBOOT"
                    Return New EinheitKanonenboot(Leben, Spieler, X, Y, HatSichBewegt)
                Case Else
                    For I = 0 To Objektverwalter.AlleEinheiten.Length - 1
                        If Objektverwalter.AlleEinheiten(I).EinheitenID = EinheitenID Then
                            Dim E As New EinheitCustom(Leben, Spieler, X, Y, HatSichBewegt)
                            E.Datenladen(I)
                            Return E
                        End If
                    Next
                    Return New EinheitInfanterie(Leben, Spieler, X, Y, HatSichBewegt)
            End Select
        End If
    End Function
    ''' <summary>
    ''' Lädt eine Einheit mit festen Werte
    ''' </summary>
    ''' <param name="EinheitenID"></param>
    ''' <param name="neuKP"></param>
    ''' <param name="neuTreibstoff"></param>
    ''' <param name="neuMunition"></param>
    ''' <param name="neuSpieler"></param>
    ''' <param name="neuBesetzen"></param>
    ''' <param name="neuX"></param>
    ''' <param name="neuY"></param>
    ''' <param name="HatSichBewegt"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Shared Function NewEinheit(ByVal EinheitenID As String, ByVal neuKP As Integer, ByVal neuTreibstoff As Integer, ByVal neuMunition As Integer, ByVal neuSpieler As Integer, ByVal neuBesetzen As Boolean, ByVal neuX As Integer, ByVal neuY As Integer, ByVal Tarnung As Boolean, Optional ByVal HatSichBewegt As Boolean = True) As ObjektEinheit
        If My.Settings.CommanderWarsGameMoodus = CommanderWarsGameModi.FireEmblem Then
            Return Fire_Emblem_MOD.NewEinheit(EinheitenID, neuKP, neuTreibstoff, neuMunition, neuSpieler, neuBesetzen, neuX, neuY, Tarnung, HatSichBewegt)
        Else
            Select Case EinheitenID.ToUpper
                Case "ABPZ"
                    Return New EinheitAmphibienpanzer(neuKP, neuTreibstoff, neuMunition, neuSpieler, neuBesetzen, neuX, neuY, Tarnung, HatSichBewegt)
                Case "ART"
                    Return New EinheitArtillerie(neuKP, neuTreibstoff, neuMunition, neuSpieler, neuBesetzen, neuX, neuY, Tarnung, HatSichBewegt)
                Case "AUFKLÄRER"
                    Return New EinheitAufklärer(neuKP, neuTreibstoff, neuMunition, neuSpieler, neuBesetzen, neuX, neuY, Tarnung, HatSichBewegt)
                Case "BOMBER"
                    Return New EinheitBomber(neuKP, neuTreibstoff, neuMunition, neuSpieler, neuBesetzen, neuX, neuY, Tarnung, HatSichBewegt)
                Case "FLAK"
                    Return New EinheitFlak(neuKP, neuTreibstoff, neuMunition, neuSpieler, neuBesetzen, neuX, neuY, Tarnung, HatSichBewegt)
                Case "FLTR"
                    Return New EinheitFlugzeugträger(neuKP, neuTreibstoff, neuMunition, neuSpieler, neuBesetzen, neuX, neuY, Tarnung, HatSichBewegt)
                Case MovementSorts.Höllium.ToString.ToUpper
                    Return New EinheitHöllium(neuKP, neuTreibstoff, neuMunition, neuSpieler, neuBesetzen, neuX, neuY, Tarnung, HatSichBewegt)
                Case "HOVERCRAFT"
                    Return New EinheitHovercraft(neuKP, neuTreibstoff, neuMunition, neuSpieler, neuBesetzen, neuX, neuY, Tarnung, HatSichBewegt)
                Case "INF"
                    Return New EinheitInfanterie(neuKP, neuTreibstoff, neuMunition, neuSpieler, neuBesetzen, neuX, neuY, Tarnung, HatSichBewegt)
                Case "JGPZ"
                    Return New EinheitJagdpanzer(neuKP, neuTreibstoff, neuMunition, neuSpieler, neuBesetzen, neuX, neuY, Tarnung, HatSichBewegt)
                Case "JÄGER"
                    Return New EinheitJäger(neuKP, neuTreibstoff, neuMunition, neuSpieler, neuBesetzen, neuX, neuY, Tarnung, HatSichBewegt)
                Case "K-HELI"
                    Return New K_Heli(neuKP, neuTreibstoff, neuMunition, neuSpieler, neuBesetzen, neuX, neuY, Tarnung, HatSichBewegt)
                Case "KPZ"
                    Return New EinheitKampfpanzer(neuKP, neuTreibstoff, neuMunition, neuSpieler, neuBesetzen, neuX, neuY, Tarnung, HatSichBewegt)
                Case "KREUZER"
                    Return New EinheitKreuzer(neuKP, neuTreibstoff, neuMunition, neuSpieler, neuBesetzen, neuX, neuY, Tarnung, HatSichBewegt)
                Case "L-BOOT"
                    Return New EinheitL_Boot(neuKP, neuTreibstoff, neuMunition, neuSpieler, neuBesetzen, neuX, neuY, Tarnung, HatSichBewegt)
                Case "LÄUFER"
                    Return New EinheitLäufer(neuKP, neuTreibstoff, neuMunition, neuSpieler, neuBesetzen, neuX, neuY, Tarnung, HatSichBewegt)
                Case MovementSorts.Mech.ToString.ToUpper
                    Return New EinheitMech(neuKP, neuTreibstoff, neuMunition, neuSpieler, neuBesetzen, neuX, neuY, Tarnung, HatSichBewegt)
                Case "MEGAPZ"
                    Return New EinheitMegapanzer(neuKP, neuTreibstoff, neuMunition, neuSpieler, neuBesetzen, neuX, neuY, Tarnung, HatSichBewegt)
                Case "MISSILE"
                    Return New EinheitMissile(neuKP, neuTreibstoff, neuMunition, neuSpieler, neuBesetzen, neuX, neuY, Tarnung, HatSichBewegt)
                Case "RKW"
                    Return New EinheitRaketenwerfer(neuKP, neuTreibstoff, neuMunition, neuSpieler, neuBesetzen, neuX, neuY, Tarnung, HatSichBewegt)
                Case "SSIEINHEIT"
                    Return New EinheitScharfschütze(neuKP, neuTreibstoff, neuMunition, neuSpieler, neuBesetzen, neuX, neuY, Tarnung, HatSichBewegt)
                Case "SCHLFF"
                    Return New EinheitSchlachtschiff(neuKP, neuTreibstoff, neuMunition, neuSpieler, neuBesetzen, neuX, neuY, Tarnung, HatSichBewegt)
                Case "S-BOMBE"
                    Return New Schwarze_Bombe(neuKP, neuTreibstoff, neuMunition, neuSpieler, neuBesetzen, neuX, neuY, Tarnung, HatSichBewegt)
                Case "S-BOOT"
                    Return New Schwarze_Boot(neuKP, neuTreibstoff, neuMunition, neuSpieler, neuBesetzen, neuX, neuY, Tarnung, HatSichBewegt)
                Case "SPÄHER"
                    Return New EinheitSpäher(neuKP, neuTreibstoff, neuMunition, neuSpieler, neuBesetzen, neuX, neuY, Tarnung, HatSichBewegt)
                Case "TARNK"
                    Return New EinheitTarnkappenbomber(neuKP, neuTreibstoff, neuMunition, neuSpieler, neuBesetzen, neuX, neuY, Tarnung, HatSichBewegt)
                Case "TITANPZ"
                    Return New EinheitTitanpanzer(neuKP, neuTreibstoff, neuMunition, neuSpieler, neuBesetzen, neuX, neuY, Tarnung, HatSichBewegt)
                Case "T-FLUGZEUG"
                    Return New EinheitTransportflugzeug(neuKP, neuTreibstoff, neuMunition, neuSpieler, neuBesetzen, neuX, neuY, Tarnung, HatSichBewegt)
                Case "T-HELI"
                    Return New EinheitTransporthelikopter(neuKP, neuTreibstoff, neuMunition, neuSpieler, neuBesetzen, neuX, neuY, Tarnung, HatSichBewegt)
                Case "TTL"
                    Return New EinheitTTL(neuKP, neuTreibstoff, neuMunition, neuSpieler, neuBesetzen, neuX, neuY, Tarnung, HatSichBewegt)
                Case "TTP"
                    Return New EinheitTTP(neuKP, neuTreibstoff, neuMunition, neuSpieler, neuBesetzen, neuX, neuY, Tarnung, HatSichBewegt)
                Case "U-BOOT"
                    Return New U_Boot(neuKP, neuTreibstoff, neuMunition, neuSpieler, neuBesetzen, neuX, neuY, Tarnung, HatSichBewegt)
                Case "ZEPPELIN"
                    Return New EinheitZeppelin(neuKP, neuTreibstoff, neuMunition, neuSpieler, neuBesetzen, neuX, neuY, Tarnung, HatSichBewegt)
                Case "ZERSTÖRER"
                    Return New EinheitZerstörer(neuKP, neuTreibstoff, neuMunition, neuSpieler, neuBesetzen, neuX, neuY, Tarnung, HatSichBewegt)
                Case "DREADNAUGHT"
                    Return New EinheitDreadnaught(neuKP, neuTreibstoff, neuMunition, neuSpieler, neuBesetzen, neuX, neuY, Tarnung, HatSichBewegt)
                Case "TRITON"
                    Return New EinheitTriton(neuKP, neuTreibstoff, neuMunition, neuSpieler, neuBesetzen, neuX, neuY, Tarnung, HatSichBewegt)
                Case "V3RAKETENWERFER"
                    Return New EinheitV3_Raketenwerfer(neuKP, neuTreibstoff, neuMunition, neuSpieler, neuBesetzen, neuX, neuY, Tarnung, HatSichBewegt)
                Case "VERSORGUNGSSCHIFF"
                    Return New EinheitVersorgungsschiff(neuKP, neuTreibstoff, neuMunition, neuSpieler, neuBesetzen, neuX, neuY, Tarnung, HatSichBewegt)
                Case "BAUPANZER"
                    Return New EinheitBaupanzer(neuKP, neuTreibstoff, neuMunition, neuSpieler, neuBesetzen, neuX, neuY, Tarnung, HatSichBewegt)
                Case "HOVERFLAK"
                    Return New EinheitHoverflak(neuKP, neuTreibstoff, neuMunition, neuSpieler, neuBesetzen, neuX, neuY, Tarnung, HatSichBewegt)
                Case "SCHWERESHOVERCRAFT"
                    Return New EinheitSchweres_Hovercraft(neuKP, neuTreibstoff, neuMunition, neuSpieler, neuBesetzen, neuX, neuY, Tarnung, HatSichBewegt)
                Case "MOTORRAD"
                    Return New EinheitMotorrad(neuKP, neuTreibstoff, neuMunition, neuSpieler, neuBesetzen, neuX, neuY, Tarnung, HatSichBewegt)
                Case "FLARE"
                    Return New EinheitFlare(neuKP, neuTreibstoff, neuMunition, neuSpieler, neuBesetzen, neuX, neuY, Tarnung, HatSichBewegt)
                Case "PANZERABWEHRKANONE"
                    Return New EinheitPanzerAbwehrkanone(neuKP, neuTreibstoff, neuMunition, neuSpieler, neuBesetzen, neuX, neuY, Tarnung, HatSichBewegt)
                Case "WASSERFLUGZEUG"
                    Return New EinheitWasserflugzeug(neuKP, neuTreibstoff, neuMunition, neuSpieler, neuBesetzen, neuX, neuY, Tarnung, HatSichBewegt)
                Case "KANONENBOOT"
                    Return New EinheitKanonenboot(neuKP, neuTreibstoff, neuMunition, neuSpieler, neuBesetzen, neuX, neuY, Tarnung, HatSichBewegt)
                Case Else
                    For I = 0 To Objektverwalter.AlleEinheiten.Length - 1
                        If Objektverwalter.AlleEinheiten(I).EinheitenID = EinheitenID Then
                            Dim E As New EinheitCustom(neuKP, neuTreibstoff, neuMunition, neuSpieler, neuBesetzen, neuX, neuY, Tarnung, HatSichBewegt)
                            E.Datenladen(I)
                            Return E
                        End If
                    Next
                    Return New EinheitInfanterie(neuKP, neuTreibstoff, neuMunition, neuSpieler, neuBesetzen, neuX, neuY, Tarnung, HatSichBewegt)
            End Select
        End If
    End Function
    ''' <summary>
    ''' Lädt eine Einheit mit bestimmten Leben
    ''' </summary>
    ''' <param name="Spieler"></param>
    ''' <param name="X"></param>
    ''' <param name="Y"></param>
    ''' <param name="EinheitenID"></param>
    ''' <param name="HatSichBewegt"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Shared Function NewEinheit(ByVal EinheitenID As String, ByVal Spieler As Integer, ByVal X As Integer, ByVal Y As Integer, Optional ByVal HatSichBewegt As Boolean = True) As ObjektEinheit
        If My.Settings.CommanderWarsGameMoodus = CommanderWarsGameModi.FireEmblem Then
            Return Fire_Emblem_MOD.NewEinheit(EinheitenID, Spieler, X, Y, HatSichBewegt)
        Else
            Select Case EinheitenID.ToUpper
                Case "ABPZ"
                    Return New EinheitAmphibienpanzer(Spieler, X, Y, HatSichBewegt)
                Case "ART"
                    Return New EinheitArtillerie(Spieler, X, Y, HatSichBewegt)
                Case "AUFKLÄRER"
                    Return New EinheitAufklärer(Spieler, X, Y, HatSichBewegt)
                Case "BOMBER"
                    Return New EinheitBomber(Spieler, X, Y, HatSichBewegt)
                Case "FLAK"
                    Return New EinheitFlak(Spieler, X, Y, HatSichBewegt)
                Case "FLTR"
                    Return New EinheitFlugzeugträger(Spieler, X, Y, HatSichBewegt)
                Case "HÖLLIUM"
                    Return New EinheitHöllium(Spieler, X, Y, HatSichBewegt)
                Case "HOVERCRAFT"
                    Return New EinheitHovercraft(Spieler, X, Y, HatSichBewegt)
                Case "INF"
                    Return New EinheitInfanterie(Spieler, X, Y, HatSichBewegt)
                Case "JGPZ"
                    Return New EinheitJagdpanzer(Spieler, X, Y, HatSichBewegt)
                Case "JÄGER"
                    Return New EinheitJäger(Spieler, X, Y, HatSichBewegt)
                Case "K-HELI"
                    Return New K_Heli(Spieler, X, Y, HatSichBewegt)
                Case "KPZ"
                    Return New EinheitKampfpanzer(Spieler, X, Y, HatSichBewegt)
                Case "KREUZER"
                    Return New EinheitKreuzer(Spieler, X, Y, HatSichBewegt)
                Case "L-BOOT"
                    Return New EinheitL_Boot(Spieler, X, Y, HatSichBewegt)
                Case "LÄUFER"
                    Return New EinheitLäufer(Spieler, X, Y, HatSichBewegt)
                Case MovementSorts.Mech.ToString.ToUpper
                    Return New EinheitMech(Spieler, X, Y, HatSichBewegt)
                Case "MEGAPZ"
                    Return New EinheitMegapanzer(Spieler, X, Y, HatSichBewegt)
                Case "MISSILE"
                    Return New EinheitMissile(Spieler, X, Y, HatSichBewegt)
                Case "RKW"
                    Return New EinheitRaketenwerfer(Spieler, X, Y, HatSichBewegt)
                Case "SSIEINHEIT"
                    Return New EinheitScharfschütze(Spieler, X, Y, HatSichBewegt)
                Case "SCHLFF"
                    Return New EinheitSchlachtschiff(Spieler, X, Y, HatSichBewegt)
                Case "S-BOMBE"
                    Return New Schwarze_Bombe(Spieler, X, Y, HatSichBewegt)
                Case "S-BOOT"
                    Return New Schwarze_Boot(Spieler, X, Y, HatSichBewegt)
                Case "SPÄHER"
                    Return New EinheitSpäher(Spieler, X, Y, HatSichBewegt)
                Case "TARNK"
                    Return New EinheitTarnkappenbomber(Spieler, X, Y, HatSichBewegt)
                Case "TITANPZ"
                    Return New EinheitTitanpanzer(Spieler, X, Y, HatSichBewegt)
                Case "T-FLUGZEUG"
                    Return New EinheitTransportflugzeug(Spieler, X, Y, HatSichBewegt)
                Case "T-HELI"
                    Return New EinheitTransporthelikopter(Spieler, X, Y, HatSichBewegt)
                Case "TTL"
                    Return New EinheitTTL(Spieler, X, Y, HatSichBewegt)
                Case "TTP"
                    Return New EinheitTTP(Spieler, X, Y, HatSichBewegt)
                Case "U-BOOT"
                    Return New U_Boot(Spieler, X, Y, HatSichBewegt)
                Case "ZEPPELIN"
                    Return New EinheitZeppelin(Spieler, X, Y, HatSichBewegt)
                Case "ZERSTÖRER"
                    Return New EinheitZerstörer(Spieler, X, Y, HatSichBewegt)
                Case "DREADNAUGHT"
                    Return New EinheitDreadnaught(Spieler, X, Y, HatSichBewegt)
                Case "TRITON"
                    Return New EinheitTriton(Spieler, X, Y, HatSichBewegt)
                Case "V3RAKETENWERFER"
                    Return New EinheitV3_Raketenwerfer(Spieler, X, Y, HatSichBewegt)
                Case "VERSORGUNGSSCHIFF"
                    Return New EinheitVersorgungsschiff(Spieler, X, Y, HatSichBewegt)
                Case "BAUPANZER"
                    Return New EinheitBaupanzer(Spieler, X, Y, HatSichBewegt)
                Case "HOVERFLAK"
                    Return New EinheitHoverflak(Spieler, X, Y, HatSichBewegt)
                Case "SCHWERESHOVERCRAFT"
                    Return New EinheitSchweres_Hovercraft(Spieler, X, Y, HatSichBewegt)
                Case "MOTORRAD"
                    Return New EinheitMotorrad(Spieler, X, Y, HatSichBewegt)
                Case "FLARE"
                    Return New EinheitFlare(Spieler, X, Y, HatSichBewegt)
                Case "PANZERABWEHRKANONE"
                    Return New EinheitPanzerAbwehrkanone(Spieler, X, Y, HatSichBewegt)
                Case "WASSERFLUGZEUG"
                    Return New EinheitWasserflugzeug(Spieler, X, Y, HatSichBewegt)
                Case "KANONENBOOT"
                    Return New EinheitKanonenboot(Spieler, X, Y, HatSichBewegt)
                Case Else
                    For I = 0 To Objektverwalter.AlleEinheiten.Length - 1
                        If Objektverwalter.AlleEinheiten(I).EinheitenID = EinheitenID Then
                            Dim E As New EinheitCustom(Spieler, X, Y, HatSichBewegt)
                            E.Datenladen(I)
                            Return E
                        End If
                    Next
                    Return New EinheitInfanterie(Spieler, X, Y, HatSichBewegt)
            End Select
        End If
    End Function
    Public Shared Sub AlleEinheitenLaden()
        Array.Resize(Objektverwalter.AlleEinheiten, 46)
        Dim Spieler As Integer = -1
        Dim X As Integer = -1
        Dim Y As Integer = -1
        Objektverwalter.AlleEinheiten(0) = New Objektverwalter.EinheitenTextur("ART")
        Objektverwalter.AlleEinheiten(1) = New Objektverwalter.EinheitenTextur("AUFKLÄRER")
        Objektverwalter.AlleEinheiten(2) = New Objektverwalter.EinheitenTextur("BOMBER")
        Objektverwalter.AlleEinheiten(3) = New Objektverwalter.EinheitenTextur("FLAK")
        Objektverwalter.AlleEinheiten(4) = New Objektverwalter.EinheitenTextur("FLTR")
        Objektverwalter.AlleEinheiten(5) = New Objektverwalter.EinheitenTextur("HÖLLIUM")
        Objektverwalter.AlleEinheiten(6) = New Objektverwalter.EinheitenTextur("HOVERCRAFT")
        Objektverwalter.AlleEinheiten(7) = New Objektverwalter.EinheitenTextur("INF")
        Objektverwalter.AlleEinheiten(8) = New Objektverwalter.EinheitenTextur("JGPZ")
        Objektverwalter.AlleEinheiten(9) = New Objektverwalter.EinheitenTextur("JÄGER")
        Objektverwalter.AlleEinheiten(10) = New Objektverwalter.EinheitenTextur("K-HELI")
        Objektverwalter.AlleEinheiten(11) = New Objektverwalter.EinheitenTextur("KPZ")
        Objektverwalter.AlleEinheiten(12) = New Objektverwalter.EinheitenTextur("KREUZER")
        Objektverwalter.AlleEinheiten(13) = New Objektverwalter.EinheitenTextur("L-BOOT")
        Objektverwalter.AlleEinheiten(14) = New Objektverwalter.EinheitenTextur("LÄUFER")
        Objektverwalter.AlleEinheiten(15) = New Objektverwalter.EinheitenTextur("MECH")
        Objektverwalter.AlleEinheiten(16) = New Objektverwalter.EinheitenTextur("MEGAPZ")
        Objektverwalter.AlleEinheiten(17) = New Objektverwalter.EinheitenTextur("MISSILE")
        Objektverwalter.AlleEinheiten(18) = New Objektverwalter.EinheitenTextur("RKW")
        Objektverwalter.AlleEinheiten(19) = New Objektverwalter.EinheitenTextur("SSIEINHEIT")
        Objektverwalter.AlleEinheiten(20) = New Objektverwalter.EinheitenTextur("SCHLFF")
        Objektverwalter.AlleEinheiten(21) = New Objektverwalter.EinheitenTextur("S-BOMBE")
        Objektverwalter.AlleEinheiten(22) = New Objektverwalter.EinheitenTextur("S-BOOT")
        Objektverwalter.AlleEinheiten(23) = New Objektverwalter.EinheitenTextur("SPÄHER")
        Objektverwalter.AlleEinheiten(24) = New Objektverwalter.EinheitenTextur("TARNK")
        Objektverwalter.AlleEinheiten(25) = New Objektverwalter.EinheitenTextur("TITANPZ")
        Objektverwalter.AlleEinheiten(26) = New Objektverwalter.EinheitenTextur("T-FLUGZEUG")
        Objektverwalter.AlleEinheiten(27) = New Objektverwalter.EinheitenTextur("T-HELI")
        Objektverwalter.AlleEinheiten(28) = New Objektverwalter.EinheitenTextur("TTL")
        Objektverwalter.AlleEinheiten(29) = New Objektverwalter.EinheitenTextur("TTP")
        Objektverwalter.AlleEinheiten(30) = New Objektverwalter.EinheitenTextur("U-BOOT")
        Objektverwalter.AlleEinheiten(31) = New Objektverwalter.EinheitenTextur("ZEPPELIN")
        Objektverwalter.AlleEinheiten(32) = New Objektverwalter.EinheitenTextur("ZERSTÖRER")
        Objektverwalter.AlleEinheiten(33) = New Objektverwalter.EinheitenTextur("ABPZ")
        Objektverwalter.AlleEinheiten(34) = New Objektverwalter.EinheitenTextur("DREADNAUGHT")
        Objektverwalter.AlleEinheiten(35) = New Objektverwalter.EinheitenTextur("TRITON")
        Objektverwalter.AlleEinheiten(36) = New Objektverwalter.EinheitenTextur("BAUPANZER")
        Objektverwalter.AlleEinheiten(37) = New Objektverwalter.EinheitenTextur("V3RAKETENWERFER")
        Objektverwalter.AlleEinheiten(38) = New Objektverwalter.EinheitenTextur("VERSORGUNGSSCHIFF")
        Objektverwalter.AlleEinheiten(39) = New Objektverwalter.EinheitenTextur("HOVERFLAK")
        Objektverwalter.AlleEinheiten(40) = New Objektverwalter.EinheitenTextur("SCHWERESHOVERCRAFT")
        Objektverwalter.AlleEinheiten(41) = New Objektverwalter.EinheitenTextur("FLARE")
        Objektverwalter.AlleEinheiten(42) = New Objektverwalter.EinheitenTextur("MOTORRAD")
        Objektverwalter.AlleEinheiten(43) = New Objektverwalter.EinheitenTextur("WASSERFLUGZEUG")
        Objektverwalter.AlleEinheiten(44) = New Objektverwalter.EinheitenTextur("PANZERABWEHRKANONE")
        Objektverwalter.AlleEinheiten(45) = New Objektverwalter.EinheitenTextur("KANONENBOOT")


        'Die selbst erstellten Einheiten laden.
        If Hauptmenü.NetzConnected And Not Hauptmenü.NetzHosten Then
            If My.Computer.FileSystem.DirectoryExists(My.Settings.Resourcenpfad + "!Custom\Multiplayer\Unit\") Then
                For Each Einheit In My.Computer.FileSystem.GetFiles(My.Settings.Resourcenpfad + "!Custom\Multiplayer\Unit\", FileIO.SearchOption.SearchTopLevelOnly, "*.ent")
                    Array.Resize(Objektverwalter.AlleEinheiten, Objektverwalter.AlleEinheiten.Length + 1)
                    Dim C As New EinheitCustom(Spieler, X, Y)
                    C.Datenladen(Einheit)
                    Objektverwalter.AlleEinheiten(Objektverwalter.AlleEinheiten.Length - 1) = New Objektverwalter.EinheitenTextur(C)
                Next
            End If
        ElseIf My.Computer.FileSystem.DirectoryExists(My.Settings.Resourcenpfad + "!Custom\Unit\") Then
            For Each Einheit In My.Computer.FileSystem.GetFiles(My.Settings.Resourcenpfad + "!Custom\Unit\", FileIO.SearchOption.SearchTopLevelOnly, "*.ent")
                Array.Resize(Objektverwalter.AlleEinheiten, Objektverwalter.AlleEinheiten.Length + 1)
                Dim C As New EinheitCustom(Spieler, X, Y)
                C.Datenladen(Einheit)
                Objektverwalter.AlleEinheiten(Objektverwalter.AlleEinheiten.Length - 1) = New Objektverwalter.EinheitenTextur(C)
            Next
        End If

        For I = 0 To Objektverwalter.AlleEinheiten.Length - 1
            If Objektverwalter.AlleEinheiten(I).EinheitenID = "INF" Then
                ObjektEinheit.INFID = I
                Exit For
            End If
        Next
        Dim S() As ObjektSpieler = New ObjektSpieler() {New ObjektSpieler(0, Color.AliceBlue, 0, Nothing, 0, Armeen.OS.ToString, "A", Nothing, ObjektSpieler.KIStufen.Geschlossen, 0)}
        Objektverwalter.ArmeeTexturenLaden(S)
        'Wie viele Armee Einheiten gibt es?
        ObjektLadebildschirm.ArmeeEiheitenZahl = 0
        For I = 0 To Objektverwalter.AlleEinheiten.Length - 1
            If Objektverwalter.AlleEinheiten(I).ArmeeEinheit < Objektverwalter.EinheitenTextur.ArmeeEinheiten.Nichts Then
                ObjektLadebildschirm.ArmeeEiheitenZahl += 1
            End If
        Next
    End Sub

    ''' <summary>
    ''' Lädt alle Bewegungsarten
    ''' </summary>
    ''' <remarks></remarks>
    Public Shared Sub BewegungstabellenLaden()
        'Amphibien
        Tabellenverwalter.AddTabelle("Amphibie+Regen", New BewegungstabelleAmphibie_Regen)
        Tabellenverwalter.AddTabelle("Amphibie+Sandsturm", New BewegungstabelleAmphibie_Sandsturm)
        Tabellenverwalter.AddTabelle("Amphibie+Schnee", New BewegungstabelleAmphibie_Schnee)
        Tabellenverwalter.AddTabelle("Amphibie+Sonne", New BewegungstabelleAmphibie_Sonne)
        'Flugzeug
        Tabellenverwalter.AddTabelle("Flugzeug+Regen", New BewegungstabelleFlugzeug_Regen)
        Tabellenverwalter.AddTabelle("Flugzeug+Sandsturm", New BewegungstabelleFlugzeug_Sandsturm)
        Tabellenverwalter.AddTabelle("Flugzeug+Schnee", New BewegungstabelleFlugzeug_Schnee)
        Tabellenverwalter.AddTabelle("Flugzeug+Sonne", New BewegungstabelleFlugzeug_Sonne)
        'Fuß
        Tabellenverwalter.AddTabelle("Fuß+Regen", New BewegungstabelleFuß_Regen)
        Tabellenverwalter.AddTabelle("Fuß+Sandsturm", New BewegungstabelleFuß_Sandsturm)
        Tabellenverwalter.AddTabelle("Fuß+Schnee", New BewegungstabelleFuß_Schnee)
        Tabellenverwalter.AddTabelle("Fuß+Sonne", New BewegungstabelleFuß_Sonne)
        'Helikopter
        Tabellenverwalter.AddTabelle("Helikopter+Regen", New BewegungstabelleHelikopter_Regen)
        Tabellenverwalter.AddTabelle("Helikopter+Sandsturm", New BewegungstabelleHelikopter_Sandsturm)
        Tabellenverwalter.AddTabelle("Helikopter+Schnee", New BewegungstabelleHelikopter_Schnee)
        Tabellenverwalter.AddTabelle("Helikopter+Sonne", New BewegungstabelleHelikopter_Sonne)
        'Höllium
        Tabellenverwalter.AddTabelle("Höllium+Regen", New BewegungstabelleHöllium_Regen)
        Tabellenverwalter.AddTabelle("Höllium+Sandsturm", New BewegungstabelleHöllium_Sandsturm)
        Tabellenverwalter.AddTabelle("Höllium+Schnee", New BewegungstabelleHöllium_Schnee)
        Tabellenverwalter.AddTabelle("Höllium+Sonne", New BewegungstabelleHöllium_Sonne)
        'Ketten
        Tabellenverwalter.AddTabelle("Ketten+Regen", New BewegungstabelleKetten_Regen)
        Tabellenverwalter.AddTabelle("Ketten+Sandsturm", New BewegungstabelleKetten_Sandsturm)
        Tabellenverwalter.AddTabelle("Ketten+Schnee", New BewegungstabelleKetten_Schnee)
        Tabellenverwalter.AddTabelle("Ketten+Sonne", New BewegungstabelleKetten_Sonne)
        'Läufer
        Tabellenverwalter.AddTabelle("Läufer+Regen", New BewegungstabelleLäufer_Regen)
        Tabellenverwalter.AddTabelle("Läufer+Sandsturm", New BewegungstabelleLäufer_Sandsturm)
        Tabellenverwalter.AddTabelle("Läufer+Schnee", New BewegungstabelleLäufer_Schnee)
        Tabellenverwalter.AddTabelle("Läufer+Sonne", New BewegungstabelleLäufer_Sonne)
        'Mech
        Tabellenverwalter.AddTabelle("Mech+Regen", New BewegungstabelleMech_Regen)
        Tabellenverwalter.AddTabelle("Mech+Sandsturm", New BewegungstabelleMech_Sandsturm)
        Tabellenverwalter.AddTabelle("Mech+Schnee", New BewegungstabelleMech_Schnee)
        Tabellenverwalter.AddTabelle("Mech+Sonne", New BewegungstabelleMech_Sonne)
        'Reifen
        Tabellenverwalter.AddTabelle("Reifen+Regen", New BewegungstabelleReifen_Regen)
        Tabellenverwalter.AddTabelle("Reifen+Sandsturm", New BewegungstabelleReifen_Sandsturm)
        Tabellenverwalter.AddTabelle("Reifen+Schnee", New BewegungstabelleReifen_Schnee)
        Tabellenverwalter.AddTabelle("Reifen+Sonne", New BewegungstabelleReifen_Sonne)
        'Schiff
        Tabellenverwalter.AddTabelle("Schiff+Regen", New BewegungstabelleSchiff_Regen)
        Tabellenverwalter.AddTabelle("Schiff+Sandsturm", New BewegungstabelleSchiff_Sandsturm)
        Tabellenverwalter.AddTabelle("Schiff+Schnee", New BewegungstabelleSchiff_Schnee)
        Tabellenverwalter.AddTabelle("Schiff+Sonne", New BewegungstabelleSchiff_Sonne)
        'Transport
        Tabellenverwalter.AddTabelle("Transport+Regen", New BewegungstabelleTransport_Regen)
        Tabellenverwalter.AddTabelle("Transport+Sandsturm", New BewegungstabelleTransport_Sandsturm)
        Tabellenverwalter.AddTabelle("Transport+Schnee", New BewegungstabelleTransport_Schnee)
        Tabellenverwalter.AddTabelle("Transport+Sonne", New BewegungstabelleTransport_Sonne)
        'Motorreifen
        Tabellenverwalter.AddTabelle("Motorreifen+Regen", New BewegungstabelleMotorreifen_Regen)
        Tabellenverwalter.AddTabelle("Motorreifen+Sandsturm", New BewegungstabelleMotorreifen_Sandsturm)
        Tabellenverwalter.AddTabelle("Motorreifen+Schnee", New BewegungstabelleMotorreifen_Schnee)
        Tabellenverwalter.AddTabelle("Motorreifen+Sonne", New BewegungstabelleMotorreifen_Sonne)
        'Wüstenketten
        Tabellenverwalter.AddTabelle("Wüstenketten+Regen", New BewegungstabelleWüstenketten_Sonne)
        Tabellenverwalter.AddTabelle("Wüstenketten+Sandsturm", New BewegungstabelleWüstenketten_Sonne)
        Tabellenverwalter.AddTabelle("Wüstenketten+Schnee", New BewegungstabelleWüstenketten_Sonne)
        Tabellenverwalter.AddTabelle("Wüstenketten+Sonne", New BewegungstabelleWüstenketten_Sonne)
        'Schneeketten
        Tabellenverwalter.AddTabelle("Schneeketten+Regen", New BewegungstabelleSchneeketten_Sonne)
        Tabellenverwalter.AddTabelle("Schneeketten+Sandsturm", New BewegungstabelleSchneeketten_Sonne)
        Tabellenverwalter.AddTabelle("Schneeketten+Schnee", New BewegungstabelleSchneeketten_Sonne)
        Tabellenverwalter.AddTabelle("Schneeketten+Sonne", New BewegungstabelleSchneeketten_Sonne)
        'Alle Custom Tabellen laden.
        If My.Computer.FileSystem.DirectoryExists(My.Settings.Resourcenpfad + "!Custom\Movement\") Then
            For Each BewTabelle In My.Computer.FileSystem.GetFiles(My.Settings.Resourcenpfad + "!Custom\Movement\", FileIO.SearchOption.SearchTopLevelOnly, "*.bew")
                EinheitCustom.CreateCustumTabellen(BewTabelle)
            Next
        End If
    End Sub
    ''' <summary>
    ''' Lädt alle Angriffsarten
    ''' </summary>
    ''' <remarks></remarks>
    Public Shared Sub AngriffsartenLaden()
        Tabellenverwalter.AddTabelle("AufklärerMG", New AngriffstabelleAufklärerMG)
        Tabellenverwalter.AddTabelle("Bazooka", New AngriffstabelleBazooka)
        Tabellenverwalter.AddTabelle("Boden-Luft-Raketen", New AngriffstabelleBoden_Luft_Raketen)
        Tabellenverwalter.AddTabelle("Bomben", New AngriffstabelleBomben)
        Tabellenverwalter.AddTabelle("Flak-Gewehr", New AngriffstabelleFlak_Gewehr)
        Tabellenverwalter.AddTabelle("H-Bomben", New AngriffstabelleH_Bomben)
        Tabellenverwalter.AddTabelle("InfanterieMG", New AngriffstabelleInfanterieMG)
        Tabellenverwalter.AddTabelle("JagdpanzerHaubitze", New AngriffstabelleJagdpanzerHaubitze)
        Tabellenverwalter.AddTabelle("JagdpanzerMG", New AngriffstabelleJagdpanzerMG)
        Tabellenverwalter.AddTabelle("K-HeliMG", New AngriffstabelleK_HeliMG)
        Tabellenverwalter.AddTabelle("KampfpanzerHaubitze", New AngriffstabelleKampfpanzerHaubitze)
        Tabellenverwalter.AddTabelle("KampfpanzerMG", New AngriffstabelleKampfpanzerMG)
        Tabellenverwalter.AddTabelle("Kanone", New AngriffstabelleKanone)
        Tabellenverwalter.AddTabelle("Läuferhaubitze", New AngriffstabelleLäuferhaubitze)
        Tabellenverwalter.AddTabelle("Luft-Boden-Raketen", New AngriffstabelleLuft_Boden_Raketen)
        Tabellenverwalter.AddTabelle("Luftraketen", New AngriffstabelleLuftraketen)
        Tabellenverwalter.AddTabelle("MechMG", New AngriffstabelleMechMG)
        Tabellenverwalter.AddTabelle("Megahaubitze", New AngriffstabelleMegahaubitze)
        Tabellenverwalter.AddTabelle("Megakanone", New AngriffstabelleMegakanone)
        Tabellenverwalter.AddTabelle("MegapanzerMG", New AngriffstabelleMegapanzerMG)
        Tabellenverwalter.AddTabelle("Omni-Missile", New AngriffstabelleOmni_Missile)
        Tabellenverwalter.AddTabelle("Panzerfaust", New AngriffstabellePanzerfaust)
        Tabellenverwalter.AddTabelle("Raketen", New AngriffstabelleRaketen)
        Tabellenverwalter.AddTabelle("Scharfschützengewehr", New AngriffstabelleScharfschützengewehr)
        Tabellenverwalter.AddTabelle("See-Luft-Raketen", New AngriffstabelleSee_Luft_Raketen)
        Tabellenverwalter.AddTabelle("See-Raketen", New AngriffstabelleSee_Raketen)
        Tabellenverwalter.AddTabelle("SpäherMG", New AngriffstabelleSpäherMG)
        Tabellenverwalter.AddTabelle("Titanhaubitze", New AngriffstabelleTitanhaubitze)
        Tabellenverwalter.AddTabelle("TitanpanzerMG", New AngriffstabelleTitanpanzerMG)
        Tabellenverwalter.AddTabelle("Torpedo", New AngriffstabelleTorpedo)
        Tabellenverwalter.AddTabelle("V3-Rakete", New AngriffstabelleV3_Rakete)
        Tabellenverwalter.AddTabelle("Vulkan-Waffe", New AngriffstabelleVulkan_Waffe)
        Tabellenverwalter.AddTabelle("Zwillingshaubitze", New AngriffstabelleZwillingshaubitze)
        Tabellenverwalter.AddTabelle("Cruise Missile", New AngriffstabelleCruiseMissile)
        Tabellenverwalter.AddTabelle("PanzerKanone", New AngriffstabellePanzerKanone)
        Tabellenverwalter.AddTabelle("FlareMG", New AngriffstabelleFlareMG)
        Tabellenverwalter.AddTabelle("Abstandswaffe", New AngriffstabelleAbstandswaffe)
        Tabellenverwalter.AddTabelle("WasserRakete", New AngriffstabelleWasserRakete)
        'Commander Wars 2 Spezial Tabellen!
        Tabellenverwalter.AddTabelle("MotorradMG", New AngriffstabelleMotorradMG)
        Tabellenverwalter.AddTabelle("ScharfschützenMG", New AngriffstabelleScharfschützenMG)
        Tabellenverwalter.AddTabelle("ZerstörerFlak", New AngriffstabelleZerstörerFlak)

        Tabellenverwalter.AddTabelle("TTPMG", New AngriffstabelleTTPMG)
        'Custom Weapons Laden
        If My.Computer.FileSystem.DirectoryExists(My.Settings.Resourcenpfad + "!Custom\Weapon\") Then
            For Each BewTabelle In My.Computer.FileSystem.GetFiles(My.Settings.Resourcenpfad + "!Custom\Weapon\", FileIO.SearchOption.SearchTopLevelOnly, "*.waf")
                EinheitCustom.CreateCustumTabellen(BewTabelle)
            Next
        End If

    End Sub

    ''' <summary>
    ''' Wandelt einen Einheitennamen in eine EinheitenID um.
    ''' </summary>
    ''' <param name="Einheitenname"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Shared Function GetIDFromName(ByVal Einheitenname As String) As String
        For Each E In Objektverwalter.AlleEinheiten
            If E.Einheit.Einheitenname.ToUpper = Einheitenname.ToUpper Then
                Return E.EinheitenID
            End If
        Next
        Return Einheitenname
    End Function
    ''' <summary>
    ''' Wandelt eine EinheitenID in einen Einheitennamen um.
    ''' </summary>
    ''' <param name="EinheitenID"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Shared Function GetNamefromID(ByVal EinheitenID As String) As String
        For Each E In Objektverwalter.AlleEinheiten
            If E.EinheitenID.ToUpper = EinheitenID.ToUpper Then
                Return E.Einheit.Einheitenname
            End If
        Next
        Return EinheitenID
    End Function
    ''' <summary>
    ''' Gibt die Standard Kosten einer Einheit zurück
    ''' </summary>
    ''' <param name="EinheitenID"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Shared Function GetEinheitenkosten(ByVal EinheitenID As String) As Integer
        For I = 0 To Objektverwalter.AlleEinheiten.Length - 1
            If EinheitenID = Objektverwalter.AlleEinheiten(I).EinheitenID Then
                Return Objektverwalter.AlleEinheiten(I).Einheit.Kosten
            End If
        Next
        Return 99999
    End Function
    ''' <summary>
    ''' Gibt eine Tabelle zurück mit Einheiten die weiter laufen können
    ''' </summary>
    ''' <param name="Bewegungsboni"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Shared Function NewBewegungsboni(ByVal Bewegungsboni As String) As BewegungsboniTabelle
        Select Case Bewegungsboni.ToUpper
            Case "ALLES+1"
                Return New BewegungsboniTabelleAlles_1
            Case "ALLES+2"
                Return New BewegungsboniTabelleAlles_2
            Case "ALLES+3"
                Return New BewegungsboniTabelleAlles_3
            Case "FERN+PANZER+1"
                Return New BewegungsboniTabelleFern_Panzer_1
            Case "FERN+PANZER+2"
                Return New BewegungsboniTabelleFern_Panzer_2
            Case "INF+1"
                Return New BewegungsboniTabelleINF_1
            Case "INF+2"
                Return New BewegungsboniTabelleINF_2
            Case "NAHKAMPF+1"
                Return New BewegungsboniTabelleNahkampf_1
            Case "PANZER+1"
                Return New BewegungsboniTabellePanzer_1
            Case "TRANSPORTER+1"
                Return New BewegungsboniTabelleTransporter_1
            Case "HOVERCRAFT+1"
                Return New BewegungsboniTabelleHovercraft_1
            Case Else
                Return Nothing
        End Select
    End Function
    ''' <summary>
    ''' Lädt eine neue Feuerkraftstabelle
    ''' </summary>
    ''' <param name="Name"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Shared Function NewFeuerkrafttabelle(ByVal Name As String) As Angriffstabelle
        Select Case Name.ToUpper
            Case "110"
                Return New Feuerkrafttabelle110
            Case "115"
                Return New Feuerkrafttabelle115
            Case "120"
                Return New Feuerkrafttabelle120
            Case "130"
                Return New Feuerkrafttabelle130
            Case "135"
                Return New Feuerkrafttabelle135
            Case "140"
                Return New Feuerkrafttabelle140
            Case "160"
                Return New Feuerkrafttabelle160
            Case "80"
                Return New Feuerkrafttabelle80
            Case "90"
                Return New Feuerkrafttabelle90
            Case "FERNKAMPF120"
                Return New FeuerkrafttabelleFernkampf120
            Case "FERNKAMPF140"
                Return New FeuerkrafttabelleFernkampf140
            Case "FERNKAMPF160"
                Return New FeuerkrafttabelleFernkampf160
            Case "HELIS150"
                Return New FeuerkrafttabelleHelis150
            Case "HELIS160"
                Return New FeuerkrafttabelleHelis160
            Case "HELIS190"
                Return New FeuerkrafttabelleHelis190
            Case "INF120"
                Return New FeuerkrafttabelleINF120
            Case "INF140"
                Return New FeuerkrafttabelleINF140
            Case "160"
                Return New FeuerkrafttabelleINF160
            Case "JESSPANZER120"
                Return New FeuerkrafttabelleJessPanzer120
            Case "LUFT115"
                Return New FeuerkrafttabelleLuft115
            Case "LUFT11505"
                Return New FeuerkrafttabelleLuft11505
            Case "LUFT135"
                Return New FeuerkrafttabelleLuft135
            Case "PANZER110"
                Return New FeuerkrafttabellePanzer110
            Case "PANZER120"
                Return New FeuerkrafttabellePanzer120
            Case "PANZER130"
                Return New FeuerkrafttabellePanzer130
            Case "PANZER160"
                Return New FeuerkrafttabellePanzer160
            Case "PANZER180"
                Return New FeuerkrafttabellePanzer180
            Case "SEE115"
                Return New FeuerkrafttabelleSee115
            Case "SEE125"
                Return New FeuerkrafttabelleSee125
            Case "SEE130"
                Return New FeuerkrafttabelleSee130
            Case "HOVERCRAFT120"
                Return New FeuerkrafttabelleHovercrafts120
            Case Else
                Return Nothing
        End Select
    End Function

    Public Shared Sub ImportAWDorStandUnit(ByVal ImagePfad As String, ByVal SpeicherPfad As String)
        Dim Bild As Bitmap = Image.FromFile(ImagePfad)
        Dim EinheitenZahl As Integer = Math.DivRem(Bild.Height, 24, 0)
        For I = 0 To EinheitenZahl - 1
            Dim Standbild As New Bitmap(64, 16)
            For I2 = 0 To 2
                For X = 0 To 15
                    For Y = 0 To 15
                        If I2 = 0 Then
                            Standbild.SetPixel(X + 16 * 3, Y, Bild.GetPixel(48 + X, 24 * I + 8 + Y))
                        End If
                        Standbild.SetPixel(X + 16 * I2, Y, Bild.GetPixel(48 + X + 16 * I2, 24 * I + 8 + Y))
                    Next
                Next
            Next
            Standbild.Save(SpeicherPfad + "Unit" + I.ToString + ".png")
        Next
    End Sub
    Public Shared Sub TranslateIDInNameAndSave(ByVal Datei As String)
        Using W As New IO.StreamWriter(Datei)
            For Each E In Objektverwalter.AlleEinheiten
                W.WriteLine(E.EinheitenID + "=" + Sprachconverter.Translate(E.Einheit.Einheitenname))
            Next
        End Using
    End Sub
#End Region
#Region "KO's"
    ''' <summary>
    ''' Lädt alle KO's mit ihren Texturen
    ''' </summary>
    ''' <param name="KOS"></param>
    ''' <remarks></remarks>
    Public Shared Sub KOLaden(ByRef KOS() As Objektverwalter.KO, Optional ByVal TextNichtSplitten As Boolean = False)
        Array.Resize(KOS, 83)
        KOS(0) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Adder.png"), "ADDER", Armeen.BH.ToString, New KOBeschreibungAdder)
        KOS(1) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Alexander.png"), "ALEXANDER", Armeen.BM.ToString, New KOBeschreibungAlexander)
        KOS(2) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Andy.png"), "ANDY", Armeen.OS.ToString, New KOBeschreibungAndy)
        KOS(3) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Candy.png"), "CANDY", Armeen.BH.ToString, New KOBeschreibungCandy)
        KOS(4) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Colin.png"), "COLIN", Armeen.BM.ToString, New KOBeschreibungColin)
        KOS(5) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Conrad.png"), "CONRAD", Armeen.GE.ToString, New KOBeschreibungConrad)
        KOS(6) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Drake.png"), "DRAKE", Armeen.GE.ToString, New KOBeschreibungDrake)
        KOS(7) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Eagle.png"), "EAGLE", Armeen.GE.ToString, New KOBeschreibungEagle)
        KOS(8) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Epoch.png"), "EPOCH", Armeen.MA.ToString, New KOBeschreibungEpoch)
        KOS(9) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Grimm.png"), "GRIMM", Armeen.YC.ToString, New KOBeschreibungGrimm)
        KOS(10) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Hachi.png"), "HACHI", Armeen.OS.ToString, New KOBeschreibungHachi)
        KOS(11) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Helmut.png"), "HELMUT", Armeen.BH.ToString, New KOBeschreibungHelmut)
        KOS(12) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Jake.png"), "JAKE", Armeen.OS.ToString, New KOBeschreibungJake)
        KOS(13) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Javier.png"), "JAVIER", Armeen.GE.ToString, New KOBeschreibungJavier)
        KOS(14) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Jess.png"), "JESS", Armeen.GE.ToString, New KOBeschreibungJess)
        KOS(15) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Jugger.png"), "JUGGER", Armeen.BH.ToString, New KOBeschreibungJugger)
        KOS(16) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Kanbei.png"), "KANBEI", Armeen.YC.ToString, New KOBeschreibungKanbei)
        KOS(17) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Kat.png"), "KAT", Armeen.BH.ToString, New KOBeschreibungKat)
        KOS(18) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Kid.png"), "KID", Armeen.BM.ToString, New KOBeschreibungKid)
        KOS(19) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Maverik.png"), "MAVERIK", Armeen.BH.ToString, New KOBeschreibungMaverik)
        KOS(20) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Max.png"), "MAX", Armeen.OS.ToString, New KOBeschreibungMax)
        KOS(21) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Melanthe.png"), "MELANTHE", Armeen.BH.ToString, New KOBeschreibungMelanthe)
        KOS(22) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Napoleon.png"), "NAPOLEON", Armeen.MA.ToString, New KOBeschreibungNapoleon)
        KOS(23) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Nell.png"), "NELL", Armeen.OS.ToString, New KOBeschreibungNell)
        KOS(24) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Olaf.png"), "OLAF", Armeen.BM.ToString, New KOBeschreibungOlaf)
        KOS(25) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Ozzy.png"), "OZZY", Armeen.AC.ToString, New KOBeschreibungOzzy)
        KOS(26) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Peter.png"), "PETER", Armeen.GE.ToString, New KOBeschreibungPeter)
        KOS(27) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Rachel.png"), "RACHEL", Armeen.OS.ToString, New KOBeschreibungRachel)
        KOS(28) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Sabaki.png"), "SABAKI", Armeen.AC.ToString, New KOBeschreibungSabaki)
        KOS(29) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Sasha.png"), "SASHA", Armeen.BM.ToString, New KOBeschreibungSasha)
        KOS(30) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Sensei.png"), "SENSEI", Armeen.YC.ToString, New KOBeschreibungSensei)
        KOS(31) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Smitan.png"), "SMITAN", Armeen.GE.ToString, New KOBeschreibungSmitan)
        KOS(32) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Sonja.png"), "SONJA", Armeen.YC.ToString, New KOBeschreibungSonja)
        KOS(33) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Sophie.png"), "SOPHIE", Armeen.OS.ToString, New KOBeschreibungSophie)
        KOS(34) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Sturm.png"), "STURM", Armeen.BH.ToString, New KOBeschreibungSturm)
        KOS(35) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Von Bolt.png"), "VON BOLT", Armeen.BH.ToString, New KOBeschreibungVon_Bolt)
        KOS(36) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Zak.png"), "ZAK", Armeen.BH.ToString, New KOBeschreibungZak)
        KOS(37) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Tami.png"), "TAMI", Armeen.OS.ToString, New KOBeschreibungTami)
        KOS(38) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Rattigan.png"), "RATTIGAN", Armeen.YC.ToString, New KOBeschreibungRattigan)
        KOS(39) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Tempest.png"), "TEMPEST", Armeen.BD.ToString, New KOBeschreibungTempest)
        KOS(40) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Ember.png"), "EMBER", Armeen.BH.ToString, New KOBeschreibungEmber)
        KOS(41) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Carmen.png"), "CARMEN", Armeen.AC.ToString, New KOBeschreibungCarmen)
        KOS(42) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Sanjuro.png"), "SANJURO", Armeen.JS.ToString, New KOBeschreibungSanjuro)
        KOS(43) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Minamoto.png"), "MINAMOTO", Armeen.JS.ToString, New KOBeschreibungMinamoto)
        KOS(44) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Graves.png"), "GRAVES", Armeen.DM.ToString, New KOBeschreibungGraves)
        KOS(45) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Robandy.png"), "ROBANDY", Armeen.MA.ToString, New KOBeschreibungRobandy)
        KOS(46) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Adam.png"), "ADAM", Armeen.TG.ToString, New KOBeschreibungAdam)
        KOS(47) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Amy.png"), "AMY", Armeen.PC.ToString, New KOBeschreibungAmy)
        KOS(48) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Walter.png"), "WALTER", Armeen.JS.ToString, New KOBeschreibungWalter)
        KOS(49) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Varlot.png"), "VARLOT", Armeen.DM.ToString, New KOBeschreibungVarlot)
        KOS(50) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Mary.png"), "MARY", Armeen.AC.ToString, New KOBeschreibungMary)
        KOS(51) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Eric.png"), "ERIC", Armeen.DM.ToString, New KOBeschreibungEric)
        KOS(52) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Edward.png"), "EDWARD", Armeen.TG.ToString, New KOBeschreibungEdward)
        KOS(53) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Koshi.png"), "KOSHI", Armeen.BD.ToString, New KOBeschreibungKoshi)
        KOS(54) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Jared.png"), "JARED", Armeen.AC.ToString, New KOBeschreibungJared)
        KOS(55) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\LE CHIFFRE.png"), "LECHIFFRE", Armeen.DM.ToString, New KOBeschreibungLeChiffre)
        KOS(56) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Zandra.png"), "ZANDRA", Armeen.BD.ToString, New KOBeschreibungZandra)
        KOS(57) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Levenworth.png"), "LEVENWORTH", Armeen.TG.ToString, New KOBeschreibungLevenworth)
        KOS(58) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Alex.png"), "ALEX", Armeen.TG.ToString, New KOBeschreibungAlex)
        KOS(59) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\ROBOSTURM.png"), "ROBOSTURM", Armeen.MA.ToString, New KOBeschreibungRobosturm)
        KOS(60) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\OFFIZIER+OS.png"), "OFFIZIEROS", Armeen.OS.ToString, New KOBeschreibungOffizierOS)
        KOS(61) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\OFFIZIER+BM.png"), "OFFIZIERBM", Armeen.BM.ToString, New KOBeschreibungOffizierBM)
        KOS(62) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\OFFIZIER+GE.png"), "OFFIZIERGE", Armeen.GE.ToString, New KOBeschreibungOffizierGE)
        KOS(63) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\OFFIZIER+YC.png"), "OFFIZIERYC", Armeen.YC.ToString, New KOBeschreibungOffizierYC)
        KOS(64) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\OFFIZIER+BH.png"), "OFFIZIERBH", Armeen.BH.ToString, New KOBeschreibungOffizierBH)
        KOS(65) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\ALEXIS.png"), "ALEXIS", Armeen.PC.ToString, New KOBeschreibungAlexis)
        KOS(66) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\JULIA.png"), "JULIA", Armeen.PC.ToString, New KOBeschreibungJulia)
        KOS(67) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Artemis.png"), "ARTEMIS", Armeen.BD.ToString, New KOBeschreibungArtemis)
        KOS(68) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Will.png"), "WILL", Armeen.OS.ToString, New KOBeschreibungWill)
        KOS(69) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Brenner.png"), "BRENNER", Armeen.OS.ToString, New KOBeschreibungBrenner)
        KOS(70) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Lin.png"), "LIN", Armeen.OS.ToString, New KOBeschreibungLin)
        KOS(71) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Isabella.png"), "ISABELLA", Armeen.OS.ToString, New KOBeschreibungIsabella)
        KOS(72) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Tasha.png"), "TASHA", Armeen.BM.ToString, New KOBeschreibungTasha)
        KOS(73) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Gage.png"), "GAGE", Armeen.BM.ToString, New KOBeschreibungGage)
        KOS(74) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Carter.png"), "CARTER", Armeen.BM.ToString, New KOBeschreibungCarter)
        KOS(75) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Waylon.png"), "WAYLON", Armeen.YC.ToString, New KOBeschreibungWaylon)
        KOS(76) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Greyfield.png"), "GREYFIELD", Armeen.YC.ToString, New KOBeschreibungGreyfield)
        KOS(77) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Penny.png"), "PENNY", Armeen.BH.ToString, New KOBeschreibungPenny)
        KOS(78) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Tabitha.png"), "TABITHA", Armeen.BH.ToString, New KOBeschreibungTabitha)
        KOS(79) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Caulder.png"), "CAULDER", Armeen.BH.ToString, New KOBeschreibungCaulder)
        KOS(80) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\IK-486-B7.png"), "IK-486-B7", Armeen.MA.ToString, New KOBeschreibungIK_486_B7)
        KOS(81) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\KeinKO.png"), "KEINKO", Armeen.OS.ToString, New KOBeschreibungKeinKO)
        KOS(82) = New Objektverwalter.KO(Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Zufall.png"), "ZUFALL", Armeen.OS.ToString, New KOBeschreibungRandom)
        'So jetzt werden Custom KO's hergestellt.
        If Hauptmenü.NetzConnected And Not Hauptmenü.NetzHosten Then
            If My.Computer.FileSystem.DirectoryExists("C:\Programmierung\Commander Wars\Programm\Commander Wars\Advance Wars-Der wahre Feind\Resources\!Custom\Multiplayer\CO\") Then
                For Each CustomCO In My.Computer.FileSystem.GetFiles("C:\Programmierung\Commander Wars\Programm\Commander Wars\Advance Wars-Der wahre Feind\Resources\!Custom\Multiplayer\CO\", FileIO.SearchOption.SearchTopLevelOnly, "*.CCO")
                    Array.Resize(KOS, KOS.Length + 1)
                    Array.Resize(Objektverwalter.CustomKOS, Objektverwalter.CustomKOS.Length + 1)
                    Dim C As New KOCustom
                    C.StartwerteLaden(CustomCO)
                    Dim KODesc As New KOBeschreibungCustom
                    If My.Computer.FileSystem.FileExists("C:\Programmierung\Commander Wars\Programm\Commander Wars\Advance Wars-Der wahre Feind\Resources\!Custom\Multiplayer\CO\CO Desc\" + C.KOID + ".desc") Then
                        KODesc.LoadNewDesc("C:\Programmierung\Commander Wars\Programm\Commander Wars\Advance Wars-Der wahre Feind\Resources\!Custom\Multiplayer\CO\CO Desc\" + C.KOID + ".desc")
                    End If
                    Dim T As Microsoft.DirectX.Direct3D.Texture
                    If My.Computer.FileSystem.FileExists("C:\Programmierung\Commander Wars\Programm\Commander Wars\Advance Wars-Der wahre Feind\Resources\!Custom\Multiplayer\CO\CO Sprite\" + C.KOID + ".png") Then
                        T = Grafikengine.LoadTexture("C:\Programmierung\Commander Wars\Programm\Commander Wars\Advance Wars-Der wahre Feind\Resources\!Custom\Multiplayer\CO\CO Sprite\" + C.KOID + ".png")
                    Else
                        T = Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Zufall.png")
                    End If
                    KOS(KOS.Length - 1) = New Objektverwalter.KO(T, C.KOID, C.Armee, KODesc)
                    Objektverwalter.CustomKOS(Objektverwalter.CustomKOS.Length - 1) = C
                Next
            End If
        ElseIf My.Computer.FileSystem.DirectoryExists("C:\Programmierung\Commander Wars\Programm\Commander Wars\Advance Wars-Der wahre Feind\Resources\!Custom\CO\") Then
            For Each CustomCO In My.Computer.FileSystem.GetFiles("C:\Programmierung\Commander Wars\Programm\Commander Wars\Advance Wars-Der wahre Feind\Resources\!Custom\CO\", FileIO.SearchOption.SearchTopLevelOnly, "*.CCO")
                Array.Resize(KOS, KOS.Length + 1)
                Array.Resize(Objektverwalter.CustomKOS, Objektverwalter.CustomKOS.Length + 1)
                Dim C As New KOCustom
                C.StartwerteLaden(CustomCO)
                Dim KODesc As New KOBeschreibungCustom
                If My.Computer.FileSystem.FileExists("C:\Programmierung\Commander Wars\Programm\Commander Wars\Advance Wars-Der wahre Feind\Resources\!Custom\CO\CO Desc\" + C.KOID + ".desc") Then
                    KODesc.LoadNewDesc("C:\Programmierung\Commander Wars\Programm\Commander Wars\Advance Wars-Der wahre Feind\Resources\!Custom\CO\CO Desc\" + C.KOID + ".desc")
                End If
                Dim T As Microsoft.DirectX.Direct3D.Texture
                If My.Computer.FileSystem.FileExists("C:\Programmierung\Commander Wars\Programm\Commander Wars\Advance Wars-Der wahre Feind\Resources\!Custom\CO\CO Sprite\" + C.KOID + ".png") Then
                    T = Grafikengine.LoadTexture("C:\Programmierung\Commander Wars\Programm\Commander Wars\Advance Wars-Der wahre Feind\Resources\!Custom\CO\CO Sprite\" + C.KOID + ".png")
                Else
                    T = Grafikengine.LoadTexture(My.Settings.Resourcenpfad + "KO's\KO\Zufall.png")
                End If
                KOS(KOS.Length - 1) = New Objektverwalter.KO(T, C.KOID, C.Armee, KODesc)
                Objektverwalter.CustomKOS(Objektverwalter.CustomKOS.Length - 1) = C
            Next
        End If




        Dim KleinerText As ObjektText = Nothing
        If TextNichtSplitten = False Then
            KleinerText = New ObjektText(New String() {}, 0, 0, Nothing, "Arial Unicode MS", 8, FontStyle.Regular)
        End If
        Dim AktuelleSprache As Sprachen = My.Settings.Sprache
        If My.Computer.FileSystem.DirectoryExists(My.Settings.Resourcenpfad + "Sprachen\" + AktuelleSprache.ToString) Then
            For I = 0 To KOS.Length - 1
                If My.Computer.FileSystem.FileExists(My.Settings.Resourcenpfad + "Sprachen\" + AktuelleSprache.ToString + "\" + KOS(I).KOID + ".KOT") Then
                    KOS(I).KOBeschreibung.LoadNewDesc(My.Settings.Resourcenpfad + "Sprachen\" + AktuelleSprache.ToString + "\" + KOS(I).KOID + ".KOT")
                End If
            Next
        End If
    End Sub
    ''' <summary>
    ''' Erstellt einen KO mit Startwerten
    ''' </summary>
    ''' <param name="KOID"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Shared Function NewKO(ByVal KOID As String, ByVal Spieler As Integer) As ObjektKO
        Select Case KOID.ToUpper
            Case "ADDER"
                Return New KOAdder(Spieler)
            Case "ALEXANDER"
                Return New KOAlexander(Spieler)
            Case "ANDY"
                Return New KOAndy(Spieler)
            Case "CANDY"
                Return New KOCandy(Spieler)
            Case "COLIN"
                Return New KOColin(Spieler)
            Case "CONRAD"
                Return New KOConrad(Spieler)
            Case "DRAKE"
                Return New KODrake(Spieler)
            Case "EAGLE"
                Return New KOEagle(Spieler)
            Case "EPOCH"
                Return New KOEpoch(Spieler)
            Case "GRIMM"
                Return New KOGrimm(Spieler)
            Case "HACHI"
                Return New KOHachi(Spieler)
            Case "HELMUT"
                Return New KOHelmut(Spieler)
            Case "JAKE"
                Return New KOJake(Spieler)
            Case "JAVIER"
                Return New KOJavier(Spieler)
            Case "JESS"
                Return New KOJess(Spieler)
            Case "JUGGER"
                Return New KOJugger(Spieler)
            Case "KANBEI"
                Return New KOKanbei(Spieler)
            Case "KAT"
                Return New KOKat(Spieler)
            Case "KID"
                Return New KOKid(Spieler)
            Case "MAVERIK"
                Return New KOMaverik(Spieler)
            Case "MAX"
                Return New KOMax(Spieler)
            Case "MELANTHE"
                Return New KOMelanthe(Spieler)
            Case "NAPOLEON"
                Return New KONapoleon(Spieler)
            Case "NELL"
                Return New KONell(Spieler)
            Case "OLAF"
                Return New KOOlaf(Spieler)
            Case "OZZY"
                Return New KOOzzy(Spieler)
            Case "PETER"
                Return New KOPeter(Spieler)
            Case "RACHEL"
                Return New KORachel(Spieler)
            Case "SABAKI"
                Return New KOSabaki(Spieler)
            Case "SASHA"
                Return New KOSasha(Spieler)
            Case "SENSEI"
                Return New KOSensei(Spieler)
            Case "SMITAN"
                Return New KOSmitan(Spieler)
            Case "SONJA"
                Return New KOSonja(Spieler)
            Case "SOPHIE"
                Return New KOSophie(Spieler)
            Case "STURM"
                Return New KOSturm(Spieler)
            Case "TAMI"
                Return New KOTami(Spieler)
            Case "VON BOLT"
                Return New KOVon_Bolt(Spieler)
            Case "ZAK"
                Return New KOZak(Spieler)
            Case "RATTIGAN"
                Return New KORattigan(Spieler)
            Case "EMBER"
                Return New KOEmber(Spieler)
            Case "TEMPEST"
                Return New KOTempest(Spieler)
            Case "CARMEN"
                Return New KOCarmen(Spieler)
            Case "SANJURO"
                Return New KOSanjuro(Spieler)
            Case "MINAMOTO"
                Return New KOMinamoto(Spieler)
            Case "GRAVES"
                Return New KOGraves(Spieler)
            Case "ROBANDY"
                Return New KORobandy(Spieler)
            Case "ADAM"
                Return New KOAdam(Spieler)
            Case "AMY"
                Return New KOAmy(Spieler)
            Case "WALTER"
                Return New KOWalter(Spieler)
            Case "VARLOT"
                Return New KOVarlot(Spieler)
            Case "MARY"
                Return New KOMary(Spieler)
            Case "ERIC"
                Return New KOEric(Spieler)
            Case "EDWARD"
                Return New KOEdward(Spieler)
            Case "KOSHI"
                Return New KOKoshi(Spieler)
            Case "JARED"
                Return New KOJared(Spieler)
            Case "ZANDRA"
                Return New KOZandra(Spieler)
            Case "LECHIFFRE"
                Return New KOLeChiffre(Spieler)
            Case "LEVENWORTH"
                Return New KOLevenworth(Spieler)
            Case "ALEX"
                Return New KOAlex(Spieler)
            Case "ROBOSTURM"
                Return New KORobosturm(Spieler)
            Case "OFFIZIEROS"
                Return New KOOffizierOS(Spieler)
            Case "OFFIZIERBM"
                Return New KOOffizierBM(Spieler)
            Case "OFFIZIERGE"
                Return New KOOffizierGE(Spieler)
            Case "OFFIZIERYC"
                Return New KOOffizierYC(Spieler)
            Case "OFFIZIERBH"
                Return New KOOffizierBH(Spieler)
            Case "ALEXIS"
                Return New KOAlexis(Spieler)
            Case "JULIA"
                Return New KOJulia(Spieler)
            Case "ARTEMIS"
                Return New KOArtemis(Spieler)
            Case "WILL"
                Return New KOWill(Spieler)
            Case "BRENNER"
                Return New KOBrenner(Spieler)
            Case "LIN"
                Return New KOLin(Spieler)
            Case "ISABELLA"
                Return New KOIsabella(Spieler)
            Case "TASHA"
                Return New KOTasha(Spieler)
            Case "GAGE"
                Return New KOGage(Spieler)
            Case "CARTER"
                Return New KOCarter(Spieler)
            Case "WAYLON"
                Return New KOWaylon(Spieler)
            Case "GREYFIELD"
                Return New KOGreyfield(Spieler)
            Case "PENNY"
                Return New KOPenny(Spieler)
            Case "TABITHA"
                Return New KOTabitha(Spieler)
            Case "CAULDER"
                Return New KOCaulder(Spieler)
            Case "ZUFALL"
                Return New KOZufall(Spieler)
            Case "IK-486-B7"
                Return New KOIK_486_B7(Spieler)
            Case "NOTHING", "-"
                Return Nothing
            Case "KEINKO"
                Return New KOKeinKO(Spieler)
            Case Else
                For I = 0 To Objektverwalter.CustomKOS.Length - 1
                    If Objektverwalter.CustomKOS(I).KOID = KOID Then
                        Return New KOCustom(Spieler, I)
                    End If
                Next
                Return New KOOffizierOS(Spieler)
        End Select
    End Function
    ''' <summary>
    ''' Erstellt einen KO mit fortgeschrittener Gabeleiste
    ''' </summary>
    ''' <param name="KOID"></param>
    ''' <param name="Gabefüllstand"></param>
    ''' <param name="Gabenart"></param>
    ''' <param name="neuSternkosten"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Shared Function NewKO(ByVal KOID As String, ByVal Spieler As Integer, ByVal Gabefüllstand As Integer, ByVal Gabenart As ObjektKO.Gabemodi, ByVal neuSternkosten As Integer) As ObjektKO
        Select Case KOID.ToUpper
            Case "ADDER"
                Return New KOAdder(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "ALEXANDER"
                Return New KOAlexander(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "ANDY"
                Return New KOAndy(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "CANDY"
                Return New KOCandy(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "COLIN"
                Return New KOColin(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "CONRAD"
                Return New KOConrad(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "DRAKE"
                Return New KODrake(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "EAGLE"
                Return New KOEagle(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "EPOCH"
                Return New KOEpoch(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "GRIMM"
                Return New KOGrimm(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "HACHI"
                Return New KOHachi(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "HELMUT"
                Return New KOHelmut(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "JAKE"
                Return New KOJake(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "JAVIER"
                Return New KOJavier(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "JESS"
                Return New KOJess(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "JUGGER"
                Return New KOJugger(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "KANBEI"
                Return New KOKanbei(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "KAT"
                Return New KOKat(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "KID"
                Return New KOKid(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "MAVERIK"
                Return New KOMaverik(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "MAX"
                Return New KOMax(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "MELANTHE"
                Return New KOMelanthe(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "NAPOLEON"
                Return New KONapoleon(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "NELL"
                Return New KONell(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "OLAF"
                Return New KOOlaf(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "OZZY"
                Return New KOOzzy(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "PETER"
                Return New KOPeter(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "RACHEL"
                Return New KORachel(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "SABAKI"
                Return New KOSabaki(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "SASHA"
                Return New KOSasha(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "SENSEI"
                Return New KOSensei(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "SMITAN"
                Return New KOSmitan(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "SONJA"
                Return New KOSonja(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "SOPHIE"
                Return New KOSophie(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "STURM"
                Return New KOSturm(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "TAMI"
                Return New KOTami(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "VON BOLT"
                Return New KOVon_Bolt(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "ZAK"
                Return New KOZak(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "RATTIGAN"
                Return New KORattigan(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "EMBER"
                Return New KOEmber(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "TEMPEST"
                Return New KOTempest(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "CARMEN"
                Return New KOCarmen(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "SANJURO"
                Return New KOSanjuro(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "MINAMOTO"
                Return New KOMinamoto(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "GRAVES"
                Return New KOGraves(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "ROBANDY"
                Return New KORobandy(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "ADAM"
                Return New KOAdam(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "AMY"
                Return New KOAmy(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "WALTER"
                Return New KOWalter(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "VARLOT"
                Return New KOVarlot(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "MARY"
                Return New KOMary(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "ERIC"
                Return New KOEric(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "EDWARD"
                Return New KOEdward(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "KOSHI"
                Return New KOKoshi(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "JARED"
                Return New KOJared(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "ZANDRA"
                Return New KOZandra(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "LECHIFFRE"
                Return New KOLeChiffre(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "LEVENWORTH"
                Return New KOLevenworth(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "ALEX"
                Return New KOAlex(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "ROBOSTURM"
                Return New KORobosturm(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "OFFIZIEROS"
                Return New KOOffizierOS(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "OFFIZIERBM"
                Return New KOOffizierBM(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "OFFIZIERGE"
                Return New KOOffizierGE(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "OFFIZIERYC"
                Return New KOOffizierYC(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "OFFIZIERBH"
                Return New KOOffizierBH(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "ALEXIS"
                Return New KOAlexis(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "JULIA"
                Return New KOJulia(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "ARTEMIS"
                Return New KOArtemis(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "WILL"
                Return New KOWill(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "BRENNER"
                Return New KOBrenner(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "LIN"
                Return New KOLin(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "ISABELLA"
                Return New KOIsabella(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "TASHA"
                Return New KOTasha(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "GAGE"
                Return New KOGage(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "CARTER"
                Return New KOCarter(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "WAYLON"
                Return New KOWaylon(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "GREYFIELD"
                Return New KOGreyfield(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "PENNY"
                Return New KOPenny(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "TABITHA"
                Return New KOTabitha(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "CAULDER"
                Return New KOCaulder(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "IK-486-B7"
                Return New KOIK_486_B7(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case "NOTHING", "-"
                Return Nothing
            Case "KEINKO"
                Return New KOKeinKO(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
            Case Else
                For I = 0 To Objektverwalter.CustomKOS.Length - 1
                    If Objektverwalter.CustomKOS(I).KOID = KOID Then
                        Return New KOCustom(Spieler, Gabefüllstand, Gabenart, neuSternkosten, I)
                    End If
                Next
                Return New KOOffizierOS(Spieler, Gabefüllstand, Gabenart, neuSternkosten)
        End Select
    End Function
    ''' <summary>
    ''' Gibt den KO Namen zurück wenn man die KO ID kennt
    ''' </summary>
    ''' <param name="KOID"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Shared Function GetKONameByKOID(ByVal KOID As String) As String
        Dim ID As Integer = GetKOID(KOID)
        If ID < 0 Then
            Return "Unbekannter KO"
        Else
            Return Objektverwalter.KOS(ID).KOBeschreibung.Name
        End If
    End Function
    ''' <summary>
    ''' Findet die passende ID für den KO als Zahl
    ''' </summary>
    ''' <param name="KOID"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Shared Function GetKOID(ByVal KOID As String) As Integer
        For I = 0 To Objektverwalter.KOS.Length - 1
            If Objektverwalter.KOS(I).KOID = KOID Then
                Return I
            End If
        Next
        Return -1
    End Function
    ''' <summary>
    ''' Erstellt die Richtige COListe!
    ''' </summary>
    ''' <param name="Spielmodus"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Shared Function GetRandomCOList(ByVal Spielmodus As CommanderWarsGameModi) As String()
        Dim COList As String() = {}
        Select Case Spielmodus
            Case CommanderWarsGameModi.AdvanceWars
                COList = My.Settings.COListAW.Split("|")
            Case CommanderWarsGameModi.AdvanceWars2
                COList = My.Settings.COListAW2.Split("|")
            Case CommanderWarsGameModi.AdvanceWarsDS
                COList = My.Settings.COListAWDS.Split("|")
            Case CommanderWarsGameModi.CommanderWars
                COList = My.Settings.COListCoW.Split("|")
            Case CommanderWarsGameModi.AdvanceWarsDC
                COList = My.Settings.COListAWDC.Split("|")
            Case Else
                COList = My.Settings.COListCoW.Split("|")
        End Select
        Return COList
    End Function

    Public Shared Sub ImportKOfromCW(ByVal Datei As String)
        If My.Computer.FileSystem.FileExists(Datei) Then
            Dim KO As String = Datei.Remove(0, Datei.LastIndexOf("\") + 1)
            KO = KO.Remove(KO.Length - 5, 5)
            Using Reader As New IO.StreamReader(Datei)
                Using Writer As New IO.StreamWriter(My.Settings.Resourcenpfad + "Sprachen\English\" + KO + ".KOT")
                    While Not Reader.EndOfStream
                        Dim Zeile As String = Reader.ReadLine.Trim
                        'Der KO Name
                        If Zeile.ToLower.StartsWith("name = """) Then
                            Writer.WriteLine("Name:" + Zeile.Split("""")(1))
                            Continue While
                        End If
                        'Fein
                        If Zeile.ToLower.StartsWith("string hitx") Then
                            Writer.WriteLine("Fein:" + Zeile.Split("""")(1))
                            Continue While
                        End If
                        'Nein
                        If Zeile.ToLower.StartsWith("string missx") Then
                            Writer.WriteLine("Nein:" + Zeile.Split("""")(1))
                            Continue While
                        End If

                        'Gabenamen
                        If Zeile.ToLower.StartsWith("copname") Then
                            Dim Z As String = Zeile.Split("""")(1) + "|"
                            Z += Reader.ReadLine.Trim.Split("""")(1)
                            Writer.WriteLine("Gaben:" + Z)
                            Continue While
                        End If
                        'Stil
                        If Zeile.ToLower.StartsWith("string skillstringx") Then
                            Writer.WriteLine("Stil:" + Zeile.Split("""")(1))
                            Continue While
                        End If
                        'Gabebeschreibung
                        If Zeile.ToLower.StartsWith("string powerstringx") Then
                            Writer.WriteLine("Gabebeschreibung:" + Zeile.Split("""")(1))
                            Continue While
                        End If
                        'Spezialgabebeschreibung
                        If Zeile.ToLower.StartsWith("string superpowerstringx") Then
                            Writer.WriteLine("SpezialGabebeschreibung:" + Zeile.Split("""")(1))
                            Continue While
                        End If
                        'KO Beschreibung
                        If Zeile.ToLower.StartsWith("string cobiox") Then
                            Dim Z As String = Zeile.Split("""")(1)
                            While True
                                Zeile = Reader.ReadLine.Trim
                                If Zeile.Contains("//") Then
                                    Zeile = Zeile.Remove(Zeile.IndexOf("//"))
                                End If
                                If Zeile.EndsWith(";") Then
                                    Z += Zeile.Split("""")(1)
                                    Exit While
                                Else
                                    Z += Zeile.Split("""")(1)
                                End If
                            End While
                            Writer.WriteLine("Beschreibung:" + Z)
                            Continue While
                        End If
                        'Gabesätze
                        If Zeile.ToLower.StartsWith("string[] copowerx") Then
                            Zeile = Reader.ReadLine.Trim
                            Dim Z As String = Zeile.Split("""")(1) + "|"
                            While True
                                Zeile = Reader.ReadLine.Trim
                                If Zeile.Contains("//") Then
                                    Zeile = Zeile.Remove(Zeile.IndexOf("//"))
                                End If
                                If Zeile.EndsWith(";") Then
                                    Z += Zeile.Split("""")(1)
                                    Exit While
                                Else
                                    Z += Zeile.Split("""")(1) + "|"
                                End If
                            End While
                            Writer.WriteLine("Gabesätze:" + Z)
                            Continue While
                        End If
                        'Siegsätze
                        If Zeile.ToLower.StartsWith("string[] victoryx") Then
                            Zeile = Reader.ReadLine.Trim
                            Dim Z As String = Zeile.Split("""")(1) + "|"
                            While True
                                Zeile = Reader.ReadLine.Trim
                                If Zeile.Contains("//") Then
                                    Zeile = Zeile.Remove(Zeile.IndexOf("//"))
                                End If
                                If Zeile.EndsWith(";") Then
                                    Z += Zeile.Split("""")(1)
                                    Exit While
                                Else
                                    Z += Zeile.Split("""")(1) + "|"
                                End If
                            End While
                            Writer.WriteLine("Siegsätze:" + Z)
                            Continue While
                        End If
                        'Tauschsätze
                        If Zeile.ToLower.StartsWith("string[] swapx") Then
                            Zeile = Reader.ReadLine.Trim
                            Dim Z As String = Zeile.Split("""")(1) + "|"
                            While True
                                Zeile = Reader.ReadLine.Trim
                                If Zeile.Contains("//") Then
                                    Zeile = Zeile.Remove(Zeile.IndexOf("//"))
                                End If
                                If Zeile.EndsWith(";") Then
                                    Z += Zeile.Split("""")(1)
                                    Exit While
                                Else
                                    Z += Zeile.Split("""")(1) + "|"
                                End If
                            End While
                            Writer.WriteLine("Tauschsätze:" + Z)
                            Continue While
                        End If
                    End While
                End Using
            End Using
        End If
    End Sub
#End Region
#Region "Animationen"
    Public Shared Function AnimationEinheitExplosion(ByVal Explosion As String, ByVal X As Integer, ByVal Y As Integer, ByVal Musikspielen As Boolean, ByVal Schlacht As Integer) As ObjektAnimation
        Select Case Explosion.ToUpper
            Case "LAND"
                Return New AnimationExplosionLand(X, Y, Musikspielen, Schlacht)
            Case "LUFT"
                Return New AnimationExplosionLuft(X, Y, Musikspielen, Schlacht)
            Case "WASSER"
                Return New AnimationExplosionSee(X, Y, Musikspielen, Schlacht)
            Case Else
                Return New AnimationExplosionLand(X, Y, Musikspielen, Schlacht)
        End Select
    End Function
    Public Shared Function Animation(ByVal X As Integer, ByVal Y As Integer, ByVal Explosion As String, ByVal Musikspielen As Boolean, ByVal Schlacht As Integer) As ObjektAnimation
        Select Case Explosion.ToUpper
            Case "SILOEXPLOSION+KLEIN"
                Return New AnimationSiloExplosion(X, Y, Musikspielen, Schlacht)
            Case "RATION"
                Return New AnimationInfoPfeil(Explosion, "Ration", X, Y, Musikspielen, Schlacht)
            Case "FALLE"
                Return New AnimationInfoPfeil(Explosion, "Falle", X, Y, Musikspielen, Schlacht)
            Case "PFEIL"
                Return New AnimationPfeil(Explosion, "", X, Y, Musikspielen, Schlacht)
            Case "LAND"
                Return New AnimationExplosionLand(X, Y, Musikspielen, Schlacht)
            Case "LUFT"
                Return New AnimationExplosionLuft(X, Y, Musikspielen, Schlacht)
            Case "WASSER"
                Return New AnimationExplosionSee(X, Y, Musikspielen, Schlacht)
            Case "NUKLEAR"
                Return New AnimationExplosionNuklear(X, Y, Musikspielen, Schlacht)
            Case "BOMBE"
                Return New AnimationExplosionBombe(X, Y, Musikspielen, Schlacht)
            Case "KRISTALL"
                Return New AnimationKristall(X, Y, Musikspielen, Schlacht)
            Case "METEOR"
                Return New AnimationMeteor(X, Y, Musikspielen, Schlacht)
            Case "BESETZEN"
                Return New AnimationBesetzung(X, Y, Musikspielen, Schlacht)
            Case "GABEEINSATZ"
                Return New AnimationGabeEinsatz(Musikspielen)
            Case "VULKANAUSBRUCH"
                Return New AnimationVulkanAusbruch(X, Y, Musikspielen)
            Case "VULKANEINSCHLAG"
                Return New AnimationVulkanEinschlag(X, Y, Musikspielen)
            Case "LASERSTRAHL"
                Return New AnimationLaserstrahl(X, Y, Musikspielen)
            Case "GESCHÜTZFEUER"
                Return New AnimationGeschütztreffer(X, Y, Musikspielen, Schlacht)
            Case "SCREENFLASH"
                Return New AnimationScreenflash(Musikspielen)
            Case "ANDYGABE"
                Return New AnimationAndyGabe(X, Y, Musikspielen, Schlacht)
            Case "MAXGABE"
                Return New AnimationMaxGabe(X, Y, Musikspielen, Schlacht)
            Case "TAMIGABE"
                Return New AnimationTamiGabe(X, Y, Musikspielen, Schlacht)
            Case "KIDGABE"
                Return New AnimationKidGabe(X, Y, Musikspielen, Schlacht)
            Case "KANBEIGABE"
                Return New AnimationKanbeiGabe(X, Y, Musikspielen, Schlacht)
            Case "KATGABE"
                Return New AnimationKatGabe(X, Y, Musikspielen, Schlacht)
            Case "SENSEIGABE"
                Return New AnimationSenseiGabe(X, Y, Musikspielen, Schlacht)
            Case "NELLGABE"
                Return New AnimationNellGabe(X, Y, Musikspielen, Schlacht)
            Case "DRAKEGABE"
                Return New AnimationDrakeGabe(X, Y, Musikspielen, Schlacht)
            Case "EAGLEGABE"
                Return New AnimationEagleGabe(X, Y, Musikspielen, Schlacht)
            Case "JESSGABE"
                Return New AnimationJessGabe(X, Y, Musikspielen, Schlacht)
            Case "OZZYGABE"
                Return New AnimationOzzyGabe(X, Y, Musikspielen, Schlacht)
            Case "AMYGABE"
                Return New AnimationAmyGabe(X, Y, Musikspielen, Schlacht)
            Case "SPEZIALGABE"
                Return New AnimationSpezialGabe(X, Y, Musikspielen, Schlacht)
            Case "SCHOCKLASER"
                Return New AnimationSchocklaser(X, Y, Musikspielen, Schlacht)
            Case Else
                Return New AnimationExplosionLand(X, Y, Musikspielen, Schlacht)
        End Select
    End Function
    ''' <summary>
    ''' Erzeugt eine Silo Explosion mit Radius und Explosionsart!
    ''' </summary>
    ''' <param name="Radius"></param>
    ''' <param name="Explosion">Die Endung der Explosion davor steht. "Explosion+"</param>
    ''' <param name="X1"></param>
    ''' <param name="Y1"></param>
    ''' <remarks></remarks>
    Public Shared Sub SiloExplosion(ByVal Radius As Integer, ByVal Explosion As String, ByVal X1 As Integer, ByVal Y1 As Integer, ByVal Schlacht As Integer)
        Dim WarteFrames As Integer = 0
        For MomentanerRadius = 0 To Radius
            Dim P As Point() = Kreisfelder(MomentanerRadius)
            For I = 0 To P.Length - 1
                Dim M1 As Boolean = False
                If I = 0 And MomentanerRadius = 0 Then M1 = True
                If Objektverwalter.Spielfeld.OnMap(P(I).X + X1, P(I).Y + Y1) Then
                    BackbufferSpiel.AddAnimation(Explosion, WarteFrames, New Point(P(I).X + X1, P(I).Y + Y1), M1, Schlacht)
                End If
            Next
            WarteFrames += AnimationsWarteFrames
        Next
    End Sub
    Public Shared Sub KristallHeilung(ByVal Radius As Integer, ByVal NoAnimationRadius As Integer, ByVal Explosion As String, ByVal X1 As Integer, ByVal Y1 As Integer, ByVal Schlacht As Integer)
        Dim WarteFrames As Integer = 0
        Dim BlockFelder() As Point = Rechteck(NoAnimationRadius)
        For MomentanerRadius = 0 To Radius
            Dim P As Point() = Kreisfelder(MomentanerRadius)
            For I = 0 To P.Length - 1
                Dim M1 As Boolean = False
                If I = 0 And MomentanerRadius = 0 Then M1 = True
                If Objektverwalter.Spielfeld.OnMap(P(I).X + X1, P(I).Y + Y1) Then
                    If Not BlockFelder.Contains(P(I)) Then
                        BackbufferSpiel.AddAnimation(Explosion, WarteFrames, New Point(P(I).X + X1, P(I).Y + Y1), M1, Schlacht)
                    End If
                End If
            Next
            WarteFrames += AnimationsWarteFrames
        Next
    End Sub
#End Region
#Region "Landschaften"
    ''' <summary>
    ''' Lädt alle Landschaftstexturen des Spiels
    ''' </summary>
    ''' <remarks></remarks>
    Public Shared Sub LandschaftsTexturenladen()
        Array.Resize(Objektverwalter.LandschaftenBilder, 43)

        Objektverwalter.LandschaftenBilder(0) = New LandschaftstexturEbene
        'Ebenen ID
        ObjektLandschaftsTextur.EbenenID = 0
        Objektverwalter.LandschaftenBilder(1) = New LandschaftstexturWald
        Objektverwalter.LandschaftenBilder(2) = New LandschaftstexturBerg
        Objektverwalter.LandschaftenBilder(3) = New LandschaftstexturStraße
        Objektverwalter.LandschaftenBilder(4) = New LandschaftstexturBrücke
        Objektverwalter.LandschaftenBilder(5) = New LandschaftstexturFluss
        Objektverwalter.LandschaftenBilder(6) = New LandschaftstexturSee
        'See ID definieren!
        ObjektLandschaftsTextur.SeeID = 6
        Objektverwalter.LandschaftenBilder(7) = New LandschaftstexturRiff
        Objektverwalter.LandschaftenBilder(8) = New LandschaftstexturStrand
        Objektverwalter.LandschaftenBilder(9) = New LandschaftstexturEbene_Schrott
        Objektverwalter.LandschaftenBilder(10) = New LandschaftstexturPfad
        Objektverwalter.LandschaftenBilder(11) = New LandschaftstexturWüste
        'Wüsten ID
        ObjektLandschaftsTextur.WüstenID = 11
        Objektverwalter.LandschaftenBilder(12) = New LandschaftstexturAusgetrocknetesFlussbett
        Objektverwalter.LandschaftenBilder(13) = New LandschaftstexturFelsen
        Objektverwalter.LandschaftenBilder(14) = New LandschaftstexturKakteen
        Objektverwalter.LandschaftenBilder(15) = New LandschaftstexturPipeline
        Objektverwalter.LandschaftenBilder(16) = New LandschaftstexturPipe
        Objektverwalter.LandschaftenBilder(17) = New LandschaftstexturPipeschweiß
        Objektverwalter.LandschaftenBilder(18) = New LandschaftstexturSchweißnaht
        Objektverwalter.LandschaftenBilder(19) = New LandschaftstexturKAPUTTESCHWEIßNAHT
        Objektverwalter.LandschaftenBilder(20) = New LandschaftstexturZugbrücke
        Objektverwalter.LandschaftenBilder(21) = New LandschaftstexturMauer
        Objektverwalter.LandschaftenBilder(22) = New LandschaftstexturKAPUTTEPIPESCHWEIß
        Objektverwalter.LandschaftenBilder(23) = New LandschaftstexturPline
        Objektverwalter.LandschaftenBilder(24) = New LandschaftstexturPlineSchweiß
        Objektverwalter.LandschaftenBilder(25) = New LandschaftstexturPLineKaputt
        Objektverwalter.LandschaftenBilder(26) = New LandschaftstexturGipfel
        Objektverwalter.LandschaftenBilder(27) = New LandschaftstexturKieferen
        Objektverwalter.LandschaftenBilder(28) = New LandschaftstexturSchnee
        'Schnee ID
        ObjektLandschaftsTextur.SchneeID = 28
        Objektverwalter.LandschaftenBilder(29) = New LandschaftstexturStraßenfrost
        Objektverwalter.LandschaftenBilder(30) = New LandschaftstexturSchneeSchrott
        Objektverwalter.LandschaftenBilder(31) = New LandschaftstexturWüstenSchrott
        Objektverwalter.LandschaftenBilder(32) = New LandschaftstexturSumpf
        Objektverwalter.LandschaftenBilder(33) = New LandschaftstexturRaue_See
        Objektverwalter.LandschaftenBilder(34) = New LandschaftstexturNebel
        Objektverwalter.LandschaftenBilder(35) = New LandschaftstexturÖdland
        Objektverwalter.LandschaftenBilder(36) = New LandschaftstexturRuine
        Objektverwalter.LandschaftenBilder(37) = New LandschaftstexturBauBrücke
        'AW DC Spezial Terrain
        Objektverwalter.LandschaftenBilder(38) = New LandschaftsTexturFeuer
        Objektverwalter.LandschaftenBilder(39) = New LandschaftsTexturPlasma
        Objektverwalter.LandschaftenBilder(40) = New LandschaftsTexturMeteor

        'Luftschlacht Landschaften
        Objektverwalter.LandschaftenBilder(41) = New LandschaftstexturLuft
        Objektverwalter.LandschaftenBilder(42) = New LandschaftstexturWolken
    End Sub

#End Region
#Region "Gebäude"
    ''' <summary>
    ''' Erstellt ein Gebäude mit Startwerten.
    ''' </summary>
    ''' <param name="GebäudeID"></param>
    ''' <param name="Spieler"></param>
    ''' <param name="X"></param>
    ''' <param name="Y"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Shared Function NewGebäude(ByVal GebäudeID As String, ByVal Spieler As Integer, ByVal X As Integer, ByVal Y As Integer, Optional ByVal Schlacht As Integer = 0, Optional ByVal Spielfeld As ObjektSpielfeld = Nothing) As ObjektGebäude
        Select Case GebäudeID.ToUpper
            Case "BASIS"
                Return New GebäudeBasis(Spieler, X, Y, Spielfeld)
            Case "FLUGHAFEN"
                Return New GebäudeFlughafen(Spieler, X, Y, Spielfeld)
            Case "WERFT"
                Return New GebäudeHafen(Spieler, X, Y, Spielfeld)
            Case "HQ"
                Return New GebäudeHQ(Spieler, X, Y, Spielfeld)
            Case "KRISTALL"
                Return New GebäudeKristall(Spieler, X, Y, Spielfeld)
            Case "LABOR"
                Return New GebäudeLabor(Spieler, X, Y, Spielfeld)
            Case "LASER"
                Return New GebäudeLaser(Spieler, X, Y, Spielfeld)
            Case "MINIGESCHÜTZ+N"
                Return New GebäudeMinigeschütz_N(Spieler, X, Y, Spielfeld)
            Case "MINIGESCHÜTZ+W"
                Return New GebäudeMinigeschütz_W(Spieler, X, Y, Spielfeld)
            Case "MINIGESCHÜTZ+O"
                Return New GebäudeMinigeschütz_O(Spieler, X, Y, Spielfeld)
            Case "MINIGESCHÜTZ+S"
                Return New GebäudeMinigeschütz_S(Spieler, X, Y, Spielfeld)
            Case "MONOLITH"
                Return New GebäudeMonolith(Spieler, X, Y, Spielfeld)
            Case "PIPESTATION"
                Return New GebäudePipestation(Spieler, X, Y, Spielfeld)
            Case "RAKETENSILO"
                Return New GebäudeRaketensilo(Spieler, X, Y, Spielfeld)
            Case "RAKETENSILO+RAKETE"
                Return New GebäudeRaketensilo_Rakete(Spieler, X, Y, Spielfeld)
            Case "SCHWARZE GESCHÜTZ+N"
                Return New GebäudeSchwarze_Geschütz_N(Spieler, X, Y, Spielfeld)
            Case "SCHWARZE GESCHÜTZ+O"
                Return New GebäudeSchwarze_Geschütz_O(Spieler, X, Y, Spielfeld)
            Case "SCHWARZE GESCHÜTZ+S"
                Return New GebäudeSchwarze_Geschütz_S(Spieler, X, Y, Spielfeld)
            Case "SCHWARZE GESCHÜTZ+W"
                Return New GebäudeSchwarze__Geschütz_W(Spieler, X, Y, Spielfeld)
            Case "SCHOCKLASER+S"
                Return New GebäudeSchocklaser_S(Spieler, X, Y, Spielfeld)
            Case "SCHOCKLASER+W"
                Return New GebäudeSchocklaser_W(Spieler, X, Y, Spielfeld)
            Case "SCHOCKLASER+O"
                Return New GebäudeSchocklaser_O(Spieler, X, Y, Spielfeld)
            Case "SCHOCKLASER+N"
                Return New GebäudeSchocklaser_N(Spieler, X, Y, Spielfeld)
            Case "FABRIK"
                Return New GebäudeFabrik(Spieler, X, Y, Spielfeld)
            Case "STADT"
                Return New GebäudeStadt(Spieler, X, Y, Spielfeld)
            Case "TURM"
                Return New GebäudeTurm(Spieler, X, Y, Spielfeld)
            Case "VULKAN"
                Return New GebäudeVulkan(Spieler, X, Y, Spielfeld)
            Case "OMEGARAKETE"
                Return New GebäudeOmega_Rakete(Spieler, X, Y, Spielfeld)
            Case "FESTUNG"
                Return New GebäudeFestung(Spieler, X, Y, Spielfeld)
            Case "MINE"
                Return New GebäudeMine(Spieler, X, Y, Spielfeld)
            Case "FLIEGENDESMINIGESCHÜTZ+N"
                Return New GebäudeFliegendesMinigeschütz_N(Spieler, X, Y, Spielfeld)
            Case "FLIEGENDESMINIGESCHÜTZ+O"
                Return New GebäudeFliegendesMinigeschütz_O(Spieler, X, Y, Spielfeld)
            Case "FLIEGENDESMINIGESCHÜTZ+S"
                Return New GebäudeFliegendesMinigeschütz_S(Spieler, X, Y, Spielfeld)
            Case "FLIEGENDESMINIGESCHÜTZ+W"
                Return New GebäudeFliegendesMinigeschütz_W(Spieler, X, Y, Spielfeld)
            Case "FLIEGENDEFESTUNG"
                Return New GebäudeFliegendeFestung(Spieler, X, Y, Spielfeld)
            Case "RADAR"
                Return New GebäudeRadar(Spieler, X, Y, Spielfeld)
            Case "TEMPWERFT"
                Return New GebäudeTemporärerHafen(Spieler, X, Y, Spielfeld)
            Case "TEMPFLUGHAFEN"
                Return New GebäudeTemporärerFlughafen(Spieler, X, Y, Spielfeld)
            Case "VERWEIS"
                Return New GebäudeVerweis(Spieler, X, Y, Schlacht)
            Case Else
                Return Nothing
        End Select
    End Function
    ''' <summary>
    ''' Erstellt ein Gebäude mit festgelegten Werten.
    ''' </summary>
    ''' <param name="GebäudeID"></param>
    ''' <param name="Spieler"></param>
    ''' <param name="X"></param>
    ''' <param name="Y"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Shared Function NewGebäude(ByVal GebäudeID As String, ByVal Spieler As Integer, ByVal Leben As Integer, ByVal Besetzungszahl As Integer, ByVal X As Integer, ByVal Y As Integer, ByVal Feuerzahl As Integer, Optional ByVal Schlacht As Integer = 0, Optional ByVal Spielfeld As ObjektSpielfeld = Nothing) As ObjektGebäude
        Select Case GebäudeID.ToUpper
            Case "BASIS"
                Return New GebäudeBasis(Spieler, Leben, Besetzungszahl, X, Y, Feuerzahl, Spielfeld)
            Case "FLUGHAFEN"
                Return New GebäudeFlughafen(Spieler, Leben, Besetzungszahl, X, Y, Feuerzahl, Spielfeld)
            Case "WERFT"
                Return New GebäudeHafen(Spieler, Leben, Besetzungszahl, X, Y, Feuerzahl, Spielfeld)
            Case "HQ"
                Return New GebäudeHQ(Spieler, Leben, Besetzungszahl, X, Y, Feuerzahl, Spielfeld)
            Case "KRISTALL"
                Return New GebäudeKristall(Spieler, Leben, Besetzungszahl, X, Y, Feuerzahl, Spielfeld)
            Case "LABOR"
                Return New GebäudeLabor(Spieler, Leben, Besetzungszahl, X, Y, Feuerzahl, Spielfeld)
            Case "LASER"
                Return New GebäudeLaser(Spieler, Leben, Besetzungszahl, X, Y, Feuerzahl, Spielfeld)
            Case "MINIGESCHÜTZ+N"
                Return New GebäudeMinigeschütz_N(Spieler, Leben, Besetzungszahl, X, Y, Feuerzahl, Spielfeld)
            Case "MINIGESCHÜTZ+W"
                Return New GebäudeMinigeschütz_W(Spieler, Leben, Besetzungszahl, X, Y, Feuerzahl, Spielfeld)
            Case "MINIGESCHÜTZ+O"
                Return New GebäudeMinigeschütz_O(Spieler, Leben, Besetzungszahl, X, Y, Feuerzahl, Spielfeld)
            Case "MINIGESCHÜTZ+S"
                Return New GebäudeMinigeschütz_S(Spieler, Leben, Besetzungszahl, X, Y, Feuerzahl, Spielfeld)
            Case "MONOLITH"
                Return New GebäudeMonolith(Spieler, Leben, Besetzungszahl, X, Y, Feuerzahl, Spielfeld)
            Case "PIPESTATION"
                Return New GebäudePipestation(Spieler, Leben, Besetzungszahl, X, Y, Feuerzahl, Spielfeld)
            Case "RAKETENSILO"
                Return New GebäudeRaketensilo(Spieler, Leben, Besetzungszahl, X, Y, Feuerzahl, Spielfeld)
            Case "RAKETENSILO+RAKETE"
                Return New GebäudeRaketensilo_Rakete(Spieler, Leben, Besetzungszahl, X, Y, Feuerzahl, Spielfeld)
            Case "SCHWARZE GESCHÜTZ+N"
                Return New GebäudeSchwarze_Geschütz_N(Spieler, Leben, Besetzungszahl, X, Y, Feuerzahl, Spielfeld)
            Case "SCHWARZE GESCHÜTZ+O"
                Return New GebäudeSchwarze_Geschütz_O(Spieler, Leben, Besetzungszahl, X, Y, Feuerzahl, Spielfeld)
            Case "SCHWARZE GESCHÜTZ+S"
                Return New GebäudeSchwarze_Geschütz_S(Spieler, Leben, Besetzungszahl, X, Y, Feuerzahl, Spielfeld)
            Case "SCHWARZE GESCHÜTZ+W"
                Return New GebäudeSchwarze__Geschütz_W(Spieler, Leben, Besetzungszahl, X, Y, Feuerzahl, Spielfeld)
            Case "SCHOCKLASER+S"
                Return New GebäudeSchocklaser_S(Spieler, Leben, Besetzungszahl, X, Y, Feuerzahl, Spielfeld)
            Case "SCHOCKLASER+W"
                Return New GebäudeSchocklaser_W(Spieler, Leben, Besetzungszahl, X, Y, Feuerzahl, Spielfeld)
            Case "SCHOCKLASER+O"
                Return New GebäudeSchocklaser_O(Spieler, Leben, Besetzungszahl, X, Y, Feuerzahl, Spielfeld)
            Case "SCHOCKLASER+N"
                Return New GebäudeSchocklaser_N(Spieler, Leben, Besetzungszahl, X, Y, Feuerzahl, Spielfeld)
            Case "FABRIK"
                Return New GebäudeFabrik(Spieler, Leben, Besetzungszahl, X, Y, Feuerzahl, Spielfeld)
            Case "STADT"
                Return New GebäudeStadt(Spieler, Leben, Besetzungszahl, X, Y, Feuerzahl, Spielfeld)
            Case "TURM"
                Return New GebäudeTurm(Spieler, Leben, Besetzungszahl, X, Y, Feuerzahl, Spielfeld)
            Case "VULKAN"
                Return New GebäudeVulkan(Spieler, Leben, Besetzungszahl, X, Y, Feuerzahl, Spielfeld)
            Case "OMEGARAKETE"
                Return New GebäudeOmega_Rakete(Spieler, Leben, Besetzungszahl, X, Y, Feuerzahl, Spielfeld)
            Case "FESTUNG"
                Return New GebäudeFestung(Spieler, Leben, Besetzungszahl, X, Y, Feuerzahl, Spielfeld)
            Case "MINE"
                Return New GebäudeMine(Spieler, Leben, Besetzungszahl, X, Y, Feuerzahl, Spielfeld)
            Case "FLIEGENDESMINIGESCHÜTZ+N"
                Return New GebäudeFliegendesMinigeschütz_N(Spieler, Leben, Besetzungszahl, X, Y, Feuerzahl, Spielfeld)
            Case "FLIEGENDESMINIGESCHÜTZ+O"
                Return New GebäudeFliegendesMinigeschütz_O(Spieler, Leben, Besetzungszahl, X, Y, Feuerzahl, Spielfeld)
            Case "FLIEGENDESMINIGESCHÜTZ+S"
                Return New GebäudeFliegendesMinigeschütz_S(Spieler, Leben, Besetzungszahl, X, Y, Feuerzahl, Spielfeld)
            Case "FLIEGENDESMINIGESCHÜTZ+W"
                Return New GebäudeFliegendesMinigeschütz_W(Spieler, Leben, Besetzungszahl, X, Y, Feuerzahl, Spielfeld)
            Case "FLIEGENDEFESTUNG"
                Return New GebäudeFliegendeFestung(Spieler, Leben, Besetzungszahl, X, Y, Feuerzahl, Spielfeld)
            Case "RADAR"
                Return New GebäudeRadar(Spieler, Leben, Besetzungszahl, X, Y, Feuerzahl, Spielfeld)
            Case "TEMPWERFT"
                Return New GebäudeTemporärerHafen(Spieler, Leben, Besetzungszahl, X, Y, Feuerzahl, Spielfeld)
            Case "TEMPFLUGHAFEN"
                Return New GebäudeTemporärerFlughafen(Spieler, Leben, Besetzungszahl, X, Y, Feuerzahl, Spielfeld)
            Case "VERWEIS"
                Return New GebäudeVerweis(Spieler, Leben, Besetzungszahl, X, Y, Feuerzahl, Schlacht)
            Case Else
                Return Nothing
        End Select
    End Function
    ''' <summary>
    ''' Erstellt ein Gebäude um Daten auszulesen
    ''' </summary>
    ''' <param name="GebäudeID"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Shared Function NewGebäude(ByVal GebäudeID As String) As ObjektGebäude
        Select Case GebäudeID.ToUpper
            Case "MONOLITH"
                Return New GebäudeMonolith()
            Case "SCHWARZE GESCHÜTZ+N"
                Return New GebäudeSchwarze_Geschütz_N
            Case "SCHWARZE GESCHÜTZ+O"
                Return New GebäudeSchwarze_Geschütz_O
            Case "SCHWARZE GESCHÜTZ+S"
                Return New GebäudeSchwarze_Geschütz_S
            Case "SCHWARZE GESCHÜTZ+W"
                Return New GebäudeSchwarze__Geschütz_W
            Case "SCHOCKLASER+S"
                Return New GebäudeSchocklaser_S
            Case "SCHOCKLASER+W"
                Return New GebäudeSchocklaser_W
            Case "SCHOCKLASER+O"
                Return New GebäudeSchocklaser_O
            Case "SCHOCKLASER+N"
                Return New GebäudeSchocklaser_N
            Case "FABRIK"
                Return New GebäudeFabrik
            Case "VULKAN"
                Return New GebäudeVulkan
            Case "OMEGARAKETE"
                Return New GebäudeOmega_Rakete
            Case "FESTUNG"
                Return New GebäudeFestung
            Case "FLIEGENDEFESTUNG"
                Return New GebäudeFliegendeFestung
            Case Else
                Return Nothing
        End Select
    End Function
    ''' <summary>
    ''' Gibt die Bauliste eines Gebäudes zurück.
    ''' </summary>
    ''' <param name="Bauliste"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Shared Function GetBauliste(ByVal Bauliste As String) As String()
        Dim Liste As String() = {}
        Select Case Bauliste.ToUpper
            Case "BASIS"
                Liste = New String() {"INF", MovementSorts.MECH.tostring.toupper, "MOTORRAD", "SSIEINHEIT", "SPÄHER", "TTP", "FLARE", "BAUPANZER", "TTL", "ART", "JGPZ", "FLAK", "PANZERABWEHRKANONE", "HOVERFLAK", "MISSILE", "RKW", "KPZ", "LÄUFER", "HOVERCRAFT", "TITANPZ", "V3RAKETENWERFER", "ABPZ", "SCHWERESHOVERCRAFT", "MEGAPZ"}
            Case "LABOR"
                Liste = New String() {MovementSorts.HÖLLIUM.tostring.toupper}
            Case "WERFT"
                Liste = New String() {"KANONENBOOT", "S-BOOT", "L-BOOT", "HOVERFLAK", "VERSORGUNGSSCHIFF", "KREUZER", "U-BOOT", "HOVERCRAFT", "ABPZ", "SCHWERESHOVERCRAFT", "ZERSTÖRER", "SCHLFF", "FLTR", "TRITON", "DREADNAUGHT"}
            Case "FLUGHAFEN"
                Select Case My.Settings.CommanderWarsGameMoodus
                    Case CommanderWarsGameModi.CommanderWars2
                        Liste = New String() {"T-HELI", "K-HELI", "AUFKLÄRER", "JÄGER", "BOMBER", "ZEPPELIN", "WASSERFLUGZEUG", "TARNK", "T-FLUGZEUG", "S-BOMBE"}
                    Case Else
                        Liste = New String() {"T-HELI", "K-HELI", "AUFKLÄRER", "JÄGER", "BOMBER", "ZEPPELIN", "TARNK", "T-FLUGZEUG", "S-BOMBE"}
                End Select

            Case "PIPESTATION"
                Liste = New String() {"TTL", "LÄUFER"}
            Case "FLUGZEUGTRÄGER"
                Select Case My.Settings.CommanderWarsGameMoodus
                    Case CommanderWarsGameModi.AdvanceWarsDC
                        Liste = New String() {"WASSERFLUGZEUG"}
                    Case CommanderWarsGameModi.CommanderWars2
                        Liste = New String() {"JÄGER", "BOMBER"}
                    Case Else
                        Liste = New String() {"T-HELI", "K-HELI", "AUFKLÄRER", "WASSERFLUGZEUG", "JÄGER", "BOMBER", "ZEPPELIN", "TARNK", "T-FLUGZEUG", "S-BOMBE"}
                End Select

            Case Else
                Liste = New String() {}
        End Select
        For Each E In Objektverwalter.AlleEinheiten
            If TypeOf E.Einheit Is EinheitCustom Then
                Dim E2 As EinheitCustom = E.Einheit
                If E2.ProduktionsOrte.Contains(Bauliste) Then
                    Array.Resize(Liste, Liste.Length + 1)
                    Liste(Liste.Length - 1) = E2.EinheitenID
                End If
            End If
        Next
        Return Liste
    End Function
    ''' <summary>
    ''' Gibt zurück wie viel Geld ein Gebäude kostet wenn man es baut.
    ''' </summary>
    ''' <param name="GebäudeID"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Shared Function GetGebäudeKosten(ByVal GebäudeID As String, ByVal Spieler As Integer) As Integer
        Select Case GebäudeID.ToUpper
            Case "KRISTALL"
                Return 20000
            Case "LASER"
                Return 30000
            Case "MINIGESCHÜTZ+N"
                Return 10000
            Case "MINIGESCHÜTZ+W"
                Return 10000
            Case "MINIGESCHÜTZ+O"
                Return 10000
            Case "MINIGESCHÜTZ+S"
                Return 10000
            Case "FLIEGENDESMINIGESCHÜTZ+N"
                Return 8000
            Case "FLIEGENDESMINIGESCHÜTZ+O"
                Return 8000
            Case "FLIEGENDESMINIGESCHÜTZ+S"
                Return 8000
            Case "FLIEGENDESMINIGESCHÜTZ+W"
                Return 8000
            Case "MONOLITH"
                Return 40000
            Case "SCHWARZE GESCHÜTZ+N"
                Return 30000
            Case "SCHWARZE GESCHÜTZ+O"
                Return 30000
            Case "SCHWARZE GESCHÜTZ+S"
                Return 30000
            Case "SCHWARZE GESCHÜTZ+W"
                Return 30000
            Case "SCHOCKLASER+S"
                Return 50000
            Case "SCHOCKLASER+W"
                Return 50000
            Case "SCHOCKLASER+O"
                Return 50000
            Case "SCHOCKLASER+N"
                Return 50000
            Case "OMEGARAKETE"
                Return 40000
            Case "FESTUNG"
                Return 60000
            Case "FLIEGENDEFESTUNG"
                Return 40000
            Case "SILO"
                Return 10000
            Case "MAUER"
                Return 1000
            Case "BRÜCKE"
                Return 5000
            Case Else
                Return -1
        End Select
    End Function
    ''' <summary>
    ''' Gibt die GebäudeBauID als Integer für das Netzwerk bzw. KI Gebäude bauen zurück
    ''' </summary>
    ''' <param name="GebäudeID"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Shared Function GetGebäudeZahlID(ByVal GebäudeID As String) As Integer
        Select Case GebäudeID.ToUpper
            Case "KRISTALL"
                Return 0
            Case "LASER"
                Return 1
            Case "MINIGESCHÜTZ+N"
                Return 2
            Case "MINIGESCHÜTZ+W"
                Return 3
            Case "MINIGESCHÜTZ+O"
                Return 4
            Case "MINIGESCHÜTZ+S"
                Return 5
            Case "MONOLITH"
                Return 6
            Case "SCHWARZE GESCHÜTZ+N"
                Return 7
            Case "SCHWARZE GESCHÜTZ+O"
                Return 8
            Case "SCHWARZE GESCHÜTZ+S"
                Return 9
            Case "SCHWARZE GESCHÜTZ+W"
                Return 10
            Case "SCHOCKLASER+S"
                Return 11
            Case "SCHOCKLASER+W"
                Return 12
            Case "SCHOCKLASER+O"
                Return 13
            Case "SCHOCKLASER+N"
                Return 14
            Case "OMEGARAKETE"
                Return 15
            Case "FESTUNG"
                Return 16
            Case "SILO"
                Return 17
            Case "FLIEGENDESMINIGESCHÜTZ+N"
                Return 18
            Case "FLIEGENDESMINIGESCHÜTZ+O"
                Return 19
            Case "FLIEGENDESMINIGESCHÜTZ+S"
                Return 20
            Case "FLIEGENDESMINIGESCHÜTZ+W"
                Return 21
            Case "FLIEGENDEFESTUNG"
                Return 22
            Case "MAUER"
                Return 23
            Case "BRÜCKE"
                Return 24
            Case Else
                Return -1
        End Select
    End Function
    ''' <summary>
    ''' Gibt die GebäudeBauID als String für das Netzwerk bzw. KI Gebäude bauen zurück
    ''' </summary>
    ''' <param name="ZahlID"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Shared Function GetGebäudeStringID(ByVal ZahlID As Integer) As String
        Select Case ZahlID
            Case 0
                Return "KRISTALL"
            Case 1
                Return "LASER"
            Case 2
                Return "MINIGESCHÜTZ+N"
            Case 3
                Return "MINIGESCHÜTZ+W"
            Case 4
                Return "MINIGESCHÜTZ+O"
            Case 5
                Return "MINIGESCHÜTZ+S"
            Case 6
                Return "MONOLITH"
            Case 7
                Return "SCHWARZE GESCHÜTZ+N"
            Case 8
                Return "SCHWARZE GESCHÜTZ+O"
            Case 9
                Return "SCHWARZE GESCHÜTZ+S"
            Case 10
                Return "SCHWARZE GESCHÜTZ+W"
            Case 11
                Return "SCHOCKLASER+S"
            Case 12
                Return "SCHOCKLASER+W"
            Case 13
                Return "SCHOCKLASER+O"
            Case 14
                Return "SCHOCKLASER+N"
            Case 15
                Return "OMEGARAKETE"
            Case 16
                Return "FESTUNG"
            Case "SILO"
                Return 17
            Case 18
                Return "FLIEGENDESMINIGESCHÜTZ+N"
            Case 19
                Return "FLIEGENDESMINIGESCHÜTZ+O"
            Case 20
                Return "FLIEGENDESMINIGESCHÜTZ+S"
            Case 21
                Return "FLIEGENDESMINIGESCHÜTZ+W"
            Case 22
                Return "FLIEGENDEFESTUNG"
            Case 23
                Return "MAUER"
            Case 24
                Return "BRÜCKE"
            Case Else
                Return "KRISTALL"
        End Select
    End Function
#End Region
#Region "KI"
    ''' <summary>
    ''' Erzeugt eine neue KI für den mitgegebenen Spieler
    ''' </summary>
    ''' <param name="Spieler"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Shared Function NewKI(ByVal Spieler As ObjektSpieler) As ObjektKI
        Select Case Spieler.KIStufe
            Case ObjektSpieler.KIStufen.Mensch
                Return Nothing
            Case ObjektSpieler.KIStufen.Kinderleicht
                Return New KIKinderleicht(Spieler)
            Case ObjektSpieler.KIStufen.Einfach
                Return New KIEinfach(Spieler)
            Case ObjektSpieler.KIStufen.Normal
                Return New KINormal(Spieler)
            Case ObjektSpieler.KIStufen.Passiv
                Return New KIPassivNetzwerk(Spieler)
            Case ObjektSpieler.KIStufen.Mittel
                Return New KIMittel(Spieler)
            Case Else
                Return Nothing
        End Select
    End Function
#End Region
#Region "Bauliste"

    ''' <summary>
    ''' Gibt die Bauliste aus dem entsprechendem Spiel zurück.
    ''' </summary>
    ''' <param name="Bauliste"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Shared Function GetBauliste(ByVal Bauliste As Baulisten) As String()
        Select Case Bauliste
            Case Baulisten.AW
                Return New String() {"INF", "MECH", "SPÄHER", "TTP", "ART", "JGPZ", "FLAK", "MISSILE", "RKW", "KPZ", _
                                   "T-HELI", "K-HELI", "JÄGER", "BOMBER", _
                                     "L-BOOT", "KREUZER", "U-BOOT", "SCHLFF"}
            Case Baulisten.AW2
                Return New String() {"INF", "MECH", "SPÄHER", "TTP", "ART", "JGPZ", "FLAK", "MISSILE", "RKW", "KPZ", "TITANPZ", _
                                    "T-HELI", "K-HELI", "JÄGER", "BOMBER", _
                                      "L-BOOT", "KREUZER", "U-BOOT", "SCHLFF"}
            Case Baulisten.AWDS
                Return New String() {"INF", "MECH", "SPÄHER", "TTP", "ART", "JGPZ", "FLAK", "MISSILE", "RKW", "KPZ", "LÄUFER", "TITANPZ", "MEGAPZ", MovementSorts.Höllium.ToString.ToUpper, _
                                    "T-HELI", "K-HELI", "JÄGER", "BOMBER", "TARNK", "S-BOMBE", _
                                     "S-BOOT", "L-BOOT", "KREUZER", "U-BOOT", "SCHLFF", "FLTR"}
            Case Baulisten.CoW
                Return New String() {"INF", "MECH", "SSIEINHEIT", "SPÄHER", "TTP", "BAUPANZER", "TTL", "ART", "JGPZ", "FLAK", "HOVERFLAK", "MISSILE", "RKW", "KPZ", "LÄUFER", "HOVERCRAFT", "TITANPZ", "V3RAKETENWERFER", "ABPZ", "SCHWERESHOVERCRAFT", "MEGAPZ", MovementSorts.Höllium.ToString.ToUpper, _
                                     "T-HELI", "K-HELI", "AUFKLÄRER", "JÄGER", "BOMBER", "ZEPPELIN", "TARNK", "T-FLUGZEUG", "S-BOMBE", _
                                      "S-BOOT", "L-BOOT", "VERSORGUNGSSCHIFF", "KREUZER", "U-BOOT", "ZERSTÖRER", "SCHLFF", "FLTR", "TRITON", "DREADNAUGHT"}
            Case Baulisten.CoWEmpty
                Return Nothing
            Case Baulisten.None
                Return New String() {}
            Case Baulisten.Groundforce
                Return New String() {"INF", "MECH", "SSIEINHEIT", "SPÄHER", "TTP", "BAUPANZER", "TTL", "ART", "JGPZ", "FLAK", "HOVERFLAK", "MISSILE", "RKW", "KPZ", "LÄUFER", "HOVERCRAFT", "TITANPZ", "V3RAKETENWERFER", "ABPZ", "SCHWERESHOVERCRAFT", "MEGAPZ", MovementSorts.Höllium.ToString.ToUpper}
            Case Baulisten.Airforce
                Return New String() {"T-HELI", "K-HELI", "AUFKLÄRER", "JÄGER", "BOMBER", "ZEPPELIN", "TARNK", "T-FLUGZEUG", "S-BOMBE"}
            Case Baulisten.Seaforce
                Return New String() {"S-BOOT", "L-BOOT", "VERSORGUNGSSCHIFF", "KREUZER", "U-BOOT", "ZERSTÖRER", "SCHLFF", "FLTR", "TRITON", "DREADNAUGHT"}
            Case Baulisten.AWDC
                Return New String() {"INF", "MECH", "MOTORRAD", "SPÄHER", "TTP", "FLARE", "FLAK", "JGPZ", "KPZ", "MEGAPZ", "ART", "PANZERABWEHRKANONE", "RKW", "MISSILE", _
                                     "JÄGER", "BOMBER", "AUFKLÄRER", "WASSERFLUGZEUG", "T-HELI", "K-HELI", _
                                     "KANONENBOOT", "KREUZER", "U-BOOT", "FLTR", "SCHLFF", "L-BOOT"}
            Case Baulisten.CoW2
                Return New String() {"INF", "MECH", "MOTORRAD", "SSIEINHEIT", "SPÄHER", "TTP", "BAUPANZER", "FLAK", "JGPZ", "KPZ", "TITANPZ", "MEGAPZ", "ART", "PANZERABWEHRKANONE", "RKW", "MISSILE", _
                                     "JÄGER", "BOMBER", "AUFKLÄRER", "WASSERFLUGZEUG", "T-HELI", "K-HELI", _
                                     "L-BOOT", "KREUZER", "U-BOOT", "ZERSTÖRER", "SCHLFF", "FLTR"}
            Case Baulisten.Custom1
                Return My.Settings.EinheitenListe1.Split("|")
            Case Baulisten.Custom2
                Return My.Settings.EinheitenListe2.Split("|")
            Case Baulisten.Custom3
                Return My.Settings.EinheitenListe3.Split("|")
            Case Else
                Return Nothing
        End Select
    End Function
    Public Shared Function GetOrdner() As String
        Dim Ordner As String = "CW\"
        Select Case My.Settings.TerrainStyle
            Case TerrainStyle.AdvanceWars
                Ordner = "AW\"
            Case TerrainStyle.AdvanceWars2
                Ordner = "AW2\"
            Case TerrainStyle.CommanderWars
                Ordner = "CW\"
            Case TerrainStyle.AdvanceWarsDC
                Ordner = "AWDC\"
            Case TerrainStyle.CommanderWars2
                Ordner = "CW2\"
            Case TerrainStyle.CustomTerrainstyle1
                Ordner = "CT1\"
            Case TerrainStyle.CustomTerrainstyle2
                Ordner = "CT2\"
            Case TerrainStyle.CustomTerrainstyle3
                Ordner = "CT3\"
        End Select
        Return Ordner
    End Function
#End Region

#Region "3D"
    Public Shared Gebäude3D As ObjektGebäude3D
    Public Shared Einheit3D As ObjektEinheit3D

    Public Shared Sub Load3D()
        Load3DLandschaft()
        Load3DGebäude()
        Load3DEinheiten()
        Symbol3D.Ini()
        TexturenHalter.Load3D()
    End Sub
    Private Shared Sub Load3DLandschaft()

    End Sub
    Shared Sub Load3DGebäude()
        If Gebäude3D Is Nothing Then
            Gebäude3D = New ObjektGebäude3D
            Gebäude3D.IniGebäude()
        End If
    End Sub
    Shared Sub Load3DEinheiten()
        If Einheit3D Is Nothing Then
            Einheit3D = New ObjektEinheit3D
            Einheit3D.IniEinheiten()
        End If
    End Sub

#End Region

End Class
